Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.21
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
Moduł:Techniczne
828
56417
557664
553378
2026-09-26T15:18:27Z
Persino
2851
557664
Scribunto
text/plain
local p={};
p["Pierwszy niepusty"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local i=1;
local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](args,"test");
local licznik=1;
while true do
local test=args["test"..i];
local _i=args[i];
local zmienna=test or _i;
local czy_tak=parametry_modul.CzyTak(zmienna);
if(czy_tak)then
return (_i)and _i or "{{{"..i.."}}}";
end;
if(licznik>=liczba_elementow_w_tablicy_args)then return;end;
if(zmienna)then licznik=licznik+1;end;
i=i+1;
end;
end;
function p.NowikiParametr(frame)
local parametr=frame.args[1];
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
parametr=mw.ustring.gsub(parametr,"(.)",function(s)
return techniczne_dane_modul.tablica_szablonowa[s] or techniczne_dane_modul.tablica_linki[s] or techniczne_dane_modul.tablica_tagowa[s];
end);
return parametr;
end;
function p.EncodeParametr(frame)
local parametr=frame.args[1];
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b)
return a..mw.text.encode(str)..b;
end)
parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str)
local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+");
if(znacznik)then
znacznik=mw.getContentLanguage():lc(znacznik);
local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik];
if(not czy_znacznik)then
return "&lt;"..znak..mw.text.encode(str).."&gt;";
end;
end;
end);
parametr=mw.text.decode(parametr);
parametr=mw.text.encode(parametr);
return parametr;
end;
p["PełnaNazwaOpisuModułu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local pelna_nazwa_strony=PobierzParametr(1) or PobierzParametr("nazwa");
local komunikat = mw.message.new('Scribunto-doc-page-name', '$1');
local zawartosc_komunikatu;
if(komunikat:exists())then
zawartosc_komunikatu=komunikat:plain();
zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu);
else
zawartosc_komunikatu="Module:$1/opis";
end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-");
if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then
local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej);
local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony)
local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu);
return pelna_strona_opisu;
else
return pelna_nazwa_strony_podanej_lub_aktualnej;
end;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_przestrzeni_nazw_lub_jego_identyfikator=PobierzParametr(1) or PobierzParametr("nazwa");
local klucz_projektu=PobierzParametr("klucz projektu");
local kod_jezyka=PobierzParametr("kod języka");
local kod_projektu=PobierzParametr("kod projektu");
local wiki_modul=require("Module:Wiki");
local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local nazwy_modul=require("Module:Nazwy");
local uchwyt_przestrzeni_nazw;
if(czy_biezace_wiki)then
uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",};
else
uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",};
end;
if(uchwyt_przestrzeni_nazw)then
return "tak";
else
return;
end;
end;
p["WzórBezOdróżnianiaWielkościLiterNazwy"] =function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor, _ = mw.ustring.gsub(nazwa,"(.)",function (s) return ((mw.ustring.match(s,"^%a$"))and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]")or s);end )
return wzor;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
local wzor=p["WzórBezOdróżnianiaWielkościLiterNazwy"](frame);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor,_=mw.ustring.gsub(strona,"([%[%]%(%)%+%-%*%?%.%^%$%%'])","%%%1");
wzor,_=mw.ustring.gsub(wzor,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórPełnejNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona);
if(nazwa_przestrzeni~="")then
nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni);
end;
nazwa_strony=p["WzórNazwyStrony"](nazwa_strony);
return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony;
end;
p["TekstBezOdwołańDoParametrówWeWzorze"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%%%","%%%%%%");
tekst=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1");
return tekst;
end;
p["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%(%a+)","%%%%%1");
return tekst;
end;
p["PrzekształćWzórDoCzystegoTekstu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
return tekst;
end;
function p.CzyStronaIstniejeJejParametry(nazwa_strony_lub_uchwyt_strony,czy_zawartosc)
local uchwyt_strony;
local parametry_modul=require("Module:Parametry");
local czy_string=parametry_modul.TypeString(nazwa_strony_lub_uchwyt_strony);
local TempFunc=function(uchwyt_strony)
if(czy_zawartosc)then
return nil,nil,false;
else
return false;
end;
end;
if(czy_string)then
uchwyt_strony = mw.title.makeTitle('',nazwa_strony_lub_uchwyt_strony);
if(not uchwyt_strony)then return TempFunc();end;
else
uchwyt_strony=nazwa_strony_lub_uchwyt_strony;
if(not uchwyt_strony)then return TempFunc();end;
end;
local id=uchwyt_strony.namespace;
if((id==-1)or(id==-2))then
local czy_istnieje=uchwyt_strony and uchwyt_strony.exists or nil;
if(not czy_zawartosc)then
return czy_istnieje;
else
return uchwyt_strony,nil,czy_istnieje;
end;
else
local tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
if(czy_zawartosc)then
if(not tekst_artykulu)then
return uchwyt_strony,nil,false;
end;
return uchwyt_strony,tekst_artykulu,true;
end;
if(not tekst_artykulu)then
return false;
end;
return true;
end;
end;
function p.PoliczZbiory(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local tekst=parametry_modul.CzyTak(args["tekst"]);
local liczba_istniejacych_zbiorow=0;
local tabela_uchwytow_stron={};
for _,nazwa_strony in ipairs(args) do
local uchwyt_strony,tekst_artykulu,czy_istnieje = p.CzyStronaIstniejeJejParametry(nazwa_strony,true);
tabela_uchwytow_stron[#tabela_uchwytow_stron+1]={uchwyt_strony,tekst_artykulu,};
if((uchwyt_strony)and(czy_istnieje)and((not tekst)or((tekst)and(tekst_artykulu))))then
liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
end;
end;
return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
function p.TransformacjaWzoru(ciag)
return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1");
end;
p["WyświetlajKodySpecjalne"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local hash=html_modul.KodHTMLZnaku("#");
local sr=html_modul.KodHTMLZnaku(";");
text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
return text;
end;
function p.Wikikod(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
local nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local szablonowe_modul=require("Module:Szablonowe");
local tab_komentarze={};
local licznik_komentarze=1;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true,nil,nil,nil,nil,function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}};
end;
tekst=p["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
local html_modul=require("Module:Html");
tekst=mw.ustring.gsub(tekst,"&(%a+);","&%1;");
tekst=mw.ustring.gsub(tekst,"&#(%d+);","&#%1;");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tab_szablonowa=techniczne_dane_modul.tablica_szablonowa;
local tab_linki=techniczne_dane_modul.tablica_linki;
local tab_tagow=techniczne_dane_modul.tablica_tagowa;
local tabela_wikitabelowa=techniczne_dane_modul.tabela_wikitabelowa;
local tab_zmienne=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe")
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local TekstBezKomentarzy=function(tekst,poczatek)
tekst=mw.ustring.gsub(tekst,(poczatek or "")..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE"),function(kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
return "";
end;
return nil;
end);
--tekst=parametry_modul["Odstępy"](tekst);
return tekst;
end;
local UsuwanieModyfikatoroweStron=function(nazwa,tabela_modyfikatorow)
if(not tabela_modyfikatorow)then return nazwa,"";end;
--local nazwa,komentarz=TekstBezKomentarzy(nazwa,"^[%s_]*");
local modyfikatory="";
repeat
local ile_zmieniono=0;
local __modyfikatory=nil;
nazwa=mw.ustring.gsub(nazwa,"^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE")..")",function(poczatek,kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
__modyfikatory=poczatek;
return "";
end;
end);
nazwa=mw.ustring.gsub(nazwa,"^(([%s_]*)(#?)([%s_]*)([^%s#:_]+)([%s_]*:))",function(calosc,a,b,c,d,e)
d=b..TekstBezKomentarzy(d)..":";
if(tabela_modyfikatorow[d])then
ile_zmieniono=ile_zmieniono+1;
modyfikatory=modyfikatory..(__modyfikatory or "")..calosc;
return "";
end;
return nil;
end);
if(ile_zmieniono==0)then
nazwa=(__modyfikatory or "")..nazwa;
end;
until (ile_zmieniono==0);
return nazwa,modyfikatory;
end;
local ZamieniajZnakiNaMikroSzablony=function(szablon,__funkcja)
szablon=mw.ustring.gsub(szablon,"(.)",function(znak)
local odpowied;
if(__funkcja)then
odpowied=__funkcja(znak);
else
odpowied=tab_linki[znak] or tab_szablonowa[znak];
end;
if(odpowied)then return odpowied;end;
return znak;
end);
return szablon;
end;
local CzyBezDwukropka=function(dwukropki)
return (not mw.ustring.match(dwukropki,":") and "tak" or "");
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local szablon_old=szablon;
szablon=TekstBezKomentarzy(szablon);
local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["int:"]))
and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
))then
local UstawianieLinkowe=function(szablon,ktore)
local SzablonStrona=function(szablon)
local strona=TekstBezKomentarzy(szablon);
strona=parametry_modul["Odstępy"](strona);
local nazwa,modyfikatory=UsuwanieModyfikatoroweStron(szablon,tabela_modyfikatorow);
strona=mw.ustring.gsub(strona,"=","{{=}}");
nazwa=mw.ustring.gsub(nazwa,"=","{{=}}");
return "{{s|oryginalna=tak|analiza=tak|"..strona
.."|nazwa="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..nazwa..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
.."|modyfikatory="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..modyfikatory..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
..(ktore and "|" or "}}");
end;
if(ktore)then
szablon=mw.ustring.gsub(szablon,"=","{{=}}");
szablon,ile=mw.ustring.gsub(szablon,"^{{([^|]-)|",function(szablon)
return SzablonStrona(szablon);
end);
else
szablon=mw.ustring.gsub(szablon,"^{{([^|]-)}}",function(szablon)
return SzablonStrona(szablon);
end);
end;
return szablon;
end;
if(mw.ustring.match(szablon_old,"|"))then
if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,true);
end;
else
if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
if(pseudoszablon)then
if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne(pseudoszablon)))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,false);
end;
else
return UstawianieLinkowe(szablon_old,false);
end;
end;
else
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
elseif(obiekt=="LINKW")then
local __szablon=TekstBezKomentarzy(szablon);
local __dwukropki,__strona=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)%]%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)%]%]$");
return "{{l|"..strona.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}"
end;
else
local __dwukropki,__strona,__nazwa=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)|(.*)%]%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)|(.*)%]%]$");
return "{{l|"..strona.."|"..nazwa.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}";
end;
end;
elseif(obiekt=="LINKZ")then
local __szablon=TekstBezKomentarzy(szablon);
local __strona=mw.ustring.match(__szablon,"^%[%s*(%S+)%s*%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s*)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
else
local __strona,__nazwa=mw.ustring.match(__szablon,"^%[(%s*%S+)(%s+.-)%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s+.-)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
end;
elseif(obiekt=="ZMIENNA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="NOWIKI")
or(obiekt=="PRE")
or(obiekt=="MATH")
or(obiekt=="ŹRÓDŁO")
or(obiekt=="GALERIA")
or(obiekt=="MAPAOBRAZU")
or(obiekt=="PUDEŁKOWEJŚCIA")
)then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_linki[znak] or tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="QUIZ")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="ZNACZNIK")or(obiekt=="INCLUDE"))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=(znak~="\"")and tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="ATRYBUTY")then
szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("(UCIECZKI)"),function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end);
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="WIKITABELA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tabela_wikitabelowa[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="INNEPRE")then
--szablon=mw.ustring.gsub(szablon,"^[^%S\n]","&nbsp;");
return szablon;
else
return szablon;
end;
end);
tekst=frame:getParent():preprocess(tekst);
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),function(kod)
kod=tonumber(kod);
local komentarz=tab_komentarze[kod];
komentarz=mw.ustring.gsub(komentarz,"^<!%-%-(.-)%-%->$",function(zawartosc)
return "<!--"..zawartosc.."-->";
end);
return komentarz;
end);
return tekst;
end;
p.WikikodStrony = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
if(not parametry_modul.CzyTak(nazwa))then return;end;
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or false;
if(not text)then return;end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
return text;
end;
function p.LuaSubst(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args[1] or args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
local inkludowany=parametry_modul.CzyTak(args["inkludowana"]);
if(inkludowany)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
else
local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
if(dokumentacja)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","");
end;
end;
return tekst;
end;
p["LuaSurowySzablonSubst"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
---
---
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,nil,
function(szablon,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(nazwa_szablonu=="Moduł:Ramka")then
local Funkcja=tabela_parametrow_szablonu[true];
if((not Funkcja)or(Funkcja~="Szablon"))then return;end;
local pelna_nazwa_szablonu=tabela_parametrow_szablonu["Nazwa"];
if(not pelna_nazwa_szablonu)then return;end;
pelna_nazwa_szablonu="Szablon:"..pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,pelna_nazwa_szablonu,nil,false,nil,true,true);
if(not tekst)then return;end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(wartosc_zmiennej)then
return wartosc_zmiennej;
end;
end;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
return tekst;
end;
end);
if(wynik)then return wynik;end;
end;
return;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
local specjalne_modul=require("Module:Specjalne");
local tab_modyfikatory={["#if:"]=true,["#ifeq:"]=true,["#ifexist:"]=true,["#ifexpr:"]=true,};
local tab_mediawiki=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tabela_zmiennych={};
local tablica_danych_parametrow_szablonu_strony={};
local function UsuwaniePseudoSzablonowe(szablon)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tab_mediawiki(nazwa_szablonu))then
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tabela_modyfikatorow)then
for name,value in pairs(tabela_modyfikatorow)do
if(tab_modyfikatory[name])then
local warunek,dalej=mw.ustring.match(szablon,"^{{([^{}|]+)(.-)$");
if(warunek)then
local iterator=szablonowe_modul.IteratorSzablonowyZakodowanegoTekstu(nil,dalej,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_usunac_kreski_pionowe=false;
for szablon_dalej,obiekt_dalej,kod_dalej in iterator do
if(obiekt_dalej=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon_dalej,tablica_danych_parametrow_szablonu_strony,kod_dalej,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((mw.ustring.match(nazwa_szablonu,"^Infobox .*$"))or(mw.ustring.match(nazwa_szablonu,"^Link%u")))then
return true;
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
elseif(obiekt_dalej=="LINKW")then
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon_dalej);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
end;
end;
if(czy_usunac_kreski_pionowe)then
warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
end);
return "{{"..warunek..dalej;
else
local warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul);
return "{{"..warunek..dalej;
end;
end;
end;
end;
end;
end;
local function PlikowePrzetwarzanie(szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieDivowe(szablon,obiekt,kod)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
return wynik;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieSzablonowe(szablon,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local infobox=mw.ustring.match(nazwa_szablonu,"^Infobox .*$");
local link=mw.ustring.match(nazwa_szablonu,"^Link%u");
if((infobox)or(link))then
if((link)and(not infobox))then
szablon="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
end;
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod ,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
elseif(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(((infobox)and(b==""))or((link)and((tonumber(a1))or(tabela_zmiennych[a1]))))then
return a..c;
end;
end);
return szablon;
end;
return nil,true;
end);
return szablon;
end;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
return wynik;
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
szablon=PrzetwarzanieSzablonowe(szablon,obiekt,kod);
if(szablon)then return szablon;end;
elseif(obiekt=="ZMIENNA")then
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
return szablon;
end;
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyPlik"](szablon))then
szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
return szablon;
else
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
if(wynik)then
local spanramka="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
return spanramka;
end;
end;
end;
return szablon;
end);
return tekst;
end;
function p.NowaLinia(frame)
return "\n";
end;
function p.Nowiki(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local PobierzParametr=parametry_modul.PobierzParametr(args);
local tekst=PobierzParametr("tekst") or PobierzParametr(1);
local sprawdz_modul=require("Module:Sprawdź");
tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},}
tekst=mw.ustring.gsub(tekst,"([&<>={}|!%+%-%*;:#\"\'%[%]/\\])",function(znak)
return "&#"..mw.ustring.byte(znak)..";";
end);
return tekst;
end;
function p.FunkcjaLua(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local modul=require("Module:"..(args[1] or args["moduł"]));
if(modul)then
if(modul[asgs[2] or args["nazwa"] or args["funkcja"]])then
local args2=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,{[1]=true,["moduł"]=true,[2]=true,nazwa=true,funkcja=true,["wyspecjalizowana"]=true,})
return modul[args[2] or args["nazwa"] or args["funkcja"]](args2);
end;
end;
end;
p["RozwińSzablonWzględemPodanychParametrów"] = function (frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame)
local PobierzParametr=parametry_modul.PobierzParametr(args);
local nazwa=PobierzParametr("Nazwa strony") or PobierzParametr("Nazwa") or "Nazwa strony";
local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or nil;
if(not text)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}};
end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
local bezkluczy={
["Nazwa strony"]=true,
["Nazwa"]=true,
["Miano przestrzeni nazw"]=true,
["Przestrzeń"]=true,
["wyspecjalizowana"]=true,
["nie rozwiń"]=true,
};
local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy);
local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab};
text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text);
return text;
end;
p["LiczbaBajtówCiąguDoNormy"] = function(frame)
local str=frame.args[1] or frame.args["ciąg"];
local ile=tonumber(frame.args[2] or frame.args["norma"]);
if(not ile)then return #str;end;
if(#str<=ile)then
return #str;
end;
return nil;
end;
p["LiczbaStronJakoPozycjeDanejKategorii"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local kategoria=parametry_modul.CzyTak(args["kategoria"]) and args["kategoria"] or "Category:Przykładowa kategoria";
local kat={
["subcats"]=true,
["files"]=true,
["pages"]=true,
}
local typ=args["typ"];
typ=(typ and kat[args["typ"]]) and args["typ"] or "all";
local nazwy_modul=require("Module:Nazwy");
kategoria=nazwy_modul["NAZWASTRONY"](kategoria);
return mw.site.stats.pagesInCategory(kategoria,typ);
end;
p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] = function(frame,tablica_danych_parametrow_szablonu_strony,kod)
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony;
end;
end;
end;
---
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny");
if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end;
local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący");
local adres;
local dwukropek;
if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then
if(adres_biezacy)then
adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy..adres_wzgledny;
else
return nil;
end;
else
if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then
if(adres_biezacy)then
adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy.."/"..adres_wzgledny;
else
return nil;
end;
else
adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:","");
adres=adres_wzgledny;
end;
end;
if(adres~="")then
while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do
adres=mw.ustring.gsub(adres,"/[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/+","/");
adres=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
adres=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
end;
adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/");
adres=mw.ustring.gsub(adres,"^[%s_]*/+","");
adres=mw.ustring.gsub(adres,"[%s_]*/+","/");
adres=mw.ustring.gsub(adres,"/+[%s_]*$","");
adres=mw.ustring.gsub(adres,"^[%s_]*","");
adres=mw.ustring.gsub(adres,"[%s_]*$","");
adres=mw.ustring.gsub(adres,"[%s_]+"," ");
end;
local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres;
-----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik;
end;
-----
return wynik;
end;
function p.PrzekierowanieDoStrony(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_modulu=PobierzParametr(1);
local html_modul=require("Module:Html");
local pudelko_modul=require("Module:Pudełko");
nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu);
local czy_nazwa_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_modulu);
if(czy_nazwa_niepoprawna)then
mw.log("Niepoprawna nazwa modulu strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
local title=mw.title.makeTitle('',nazwa_modulu);
if(title)then
local strona=title.redirectTarget;
if(not strona)then return;end;
return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText);
else
mw.log("Nieprawidłowy format nazwy modułu przy uzyskiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
end;
function p.UsuwanieKomentarzowe(tekst,__FUNKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"(<!%-%-.-%-%->)",__FUNKCJA_USUWANIA or "");
return tekst;
end;
function p.UsuwanieZnakoweKontrolneNiewidzialne(tekst,__FUKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"([^%C\n\t ])",__FUKCJA_USUWANIA or "");
return tekst;
end;
p["Forma wyrażenia po liczbie"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_table_frame=parametry_modul.TypeTable(frame);
local args=czy_table_frame and (frame.args or frame) or nil;
local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0");
local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów";
local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór";
local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory";
local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]);
local specjalne_modul=require("Module:Specjalne");
local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1);
if(not liczba_number)then return "(błąd)";end;
local liczba_number=math.abs(liczba_number);
if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end;
if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end;
if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
local reszta=math.fmod(liczba_number,20);
if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
if(reszta==1)then
if(liczba_number<20)then
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;
else
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2
end;
end;
if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;
end;
return p;
klor5dqlljz52qe65vnbvtycx82nhpm
557692
557664
2026-09-26T21:52:58Z
Persino
2851
557692
Scribunto
text/plain
local p={};
p["Pierwszy niepusty"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local i=1;
local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](args,"test");
local licznik=1;
while true do
local test=args["test"..i];
local _i=args[i];
local zmienna=test or _i;
local czy_tak=parametry_modul.CzyTak(zmienna);
if(czy_tak)then
return (_i)and _i or "{{{"..i.."}}}";
end;
if(licznik>=liczba_elementow_w_tablicy_args)then return;end;
if(zmienna)then licznik=licznik+1;end;
i=i+1;
end;
end;
function p.NowikiParametr(frame)
local parametr=frame.args[1];
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
parametr=mw.ustring.gsub(parametr,"(.)",function(s)
return techniczne_dane_modul.tablica_szablonowa[s] or techniczne_dane_modul.tablica_linki[s] or techniczne_dane_modul.tablica_tagowa[s];
end);
return parametr;
end;
function p.EncodeParametr(frame)
local parametr=frame.args[1];
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b)
return a..mw.text.encode(str)..b;
end)
parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str)
local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+");
if(znacznik)then
znacznik=mw.getContentLanguage():lc(znacznik);
local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik];
if(not czy_znacznik)then
return "&lt;"..znak..mw.text.encode(str).."&gt;";
end;
end;
end);
parametr=mw.text.decode(parametr);
parametr=mw.text.encode(parametr);
return parametr;
end;
p["PełnaNazwaOpisuModułu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local pelna_nazwa_strony=PobierzParametr(1) or PobierzParametr("nazwa");
local komunikat = mw.message.new('Scribunto-doc-page-name', '$1');
local zawartosc_komunikatu;
if(komunikat:exists())then
zawartosc_komunikatu=komunikat:plain();
zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu);
else
zawartosc_komunikatu="Module:$1/opis";
end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-");
if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then
local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej);
local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony)
local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu);
return pelna_strona_opisu;
else
return pelna_nazwa_strony_podanej_lub_aktualnej;
end;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_przestrzeni_nazw_lub_jego_identyfikator=PobierzParametr(1) or PobierzParametr("nazwa");
local klucz_projektu=PobierzParametr("klucz projektu");
local kod_jezyka=PobierzParametr("kod języka");
local kod_projektu=PobierzParametr("kod projektu");
local wiki_modul=require("Module:Wiki");
local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local nazwy_modul=require("Module:Nazwy");
local uchwyt_przestrzeni_nazw;
if(czy_biezace_wiki)then
uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",};
else
uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",};
end;
if(uchwyt_przestrzeni_nazw)then
return "tak";
else
return;
end;
end;
p["WzórBezOdróżnianiaWielkościLiterNazwy"] =function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor, _ = mw.ustring.gsub(nazwa,"(.)",
function (s)
return (
(mw.ustring.match(s,"^%a$"))
and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]")
or ("%"..s)
);
end
);
return wzor;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
local wzor=p["WzórBezOdróżnianiaWielkościLiterNazwy"](frame);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor,_=mw.ustring.gsub(strona,"([%[%]%(%)%+%-%*%?%.%^%$%%'])","%%%1");
wzor,_=mw.ustring.gsub(wzor,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórPełnejNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona);
if(nazwa_przestrzeni~="")then
nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni);
end;
nazwa_strony=p["WzórNazwyStrony"](nazwa_strony);
return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony;
end;
p["TekstBezOdwołańDoParametrówWeWzorze"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%%%","%%%%%%");
tekst=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1");
return tekst;
end;
p["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%(%a+)","%%%%%1");
return tekst;
end;
p["PrzekształćWzórDoCzystegoTekstu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
return tekst;
end;
function p.CzyStronaIstniejeJejParametry(nazwa_strony_lub_uchwyt_strony,czy_zawartosc)
local uchwyt_strony;
local parametry_modul=require("Module:Parametry");
local czy_string=parametry_modul.TypeString(nazwa_strony_lub_uchwyt_strony);
local TempFunc=function(uchwyt_strony)
if(czy_zawartosc)then
return nil,nil,false;
else
return false;
end;
end;
if(czy_string)then
uchwyt_strony = mw.title.makeTitle('',nazwa_strony_lub_uchwyt_strony);
if(not uchwyt_strony)then return TempFunc();end;
else
uchwyt_strony=nazwa_strony_lub_uchwyt_strony;
if(not uchwyt_strony)then return TempFunc();end;
end;
local id=uchwyt_strony.namespace;
if((id==-1)or(id==-2))then
local czy_istnieje=uchwyt_strony and uchwyt_strony.exists or nil;
if(not czy_zawartosc)then
return czy_istnieje;
else
return uchwyt_strony,nil,czy_istnieje;
end;
else
local tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
if(czy_zawartosc)then
if(not tekst_artykulu)then
return uchwyt_strony,nil,false;
end;
return uchwyt_strony,tekst_artykulu,true;
end;
if(not tekst_artykulu)then
return false;
end;
return true;
end;
end;
function p.PoliczZbiory(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local tekst=parametry_modul.CzyTak(args["tekst"]);
local liczba_istniejacych_zbiorow=0;
local tabela_uchwytow_stron={};
for _,nazwa_strony in ipairs(args) do
local uchwyt_strony,tekst_artykulu,czy_istnieje = p.CzyStronaIstniejeJejParametry(nazwa_strony,true);
tabela_uchwytow_stron[#tabela_uchwytow_stron+1]={uchwyt_strony,tekst_artykulu,};
if((uchwyt_strony)and(czy_istnieje)and((not tekst)or((tekst)and(tekst_artykulu))))then
liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
end;
end;
return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
function p.TransformacjaWzoru(ciag)
return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1");
end;
p["WyświetlajKodySpecjalne"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local hash=html_modul.KodHTMLZnaku("#");
local sr=html_modul.KodHTMLZnaku(";");
text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
return text;
end;
function p.Wikikod(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
local nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local szablonowe_modul=require("Module:Szablonowe");
local tab_komentarze={};
local licznik_komentarze=1;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true,nil,nil,nil,nil,function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}};
end;
tekst=p["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
local html_modul=require("Module:Html");
tekst=mw.ustring.gsub(tekst,"&(%a+);","&%1;");
tekst=mw.ustring.gsub(tekst,"&#(%d+);","&#%1;");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tab_szablonowa=techniczne_dane_modul.tablica_szablonowa;
local tab_linki=techniczne_dane_modul.tablica_linki;
local tab_tagow=techniczne_dane_modul.tablica_tagowa;
local tabela_wikitabelowa=techniczne_dane_modul.tabela_wikitabelowa;
local tab_zmienne=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe")
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local TekstBezKomentarzy=function(tekst,poczatek)
tekst=mw.ustring.gsub(tekst,(poczatek or "")..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE"),function(kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
return "";
end;
return nil;
end);
--tekst=parametry_modul["Odstępy"](tekst);
return tekst;
end;
local UsuwanieModyfikatoroweStron=function(nazwa,tabela_modyfikatorow)
if(not tabela_modyfikatorow)then return nazwa,"";end;
--local nazwa,komentarz=TekstBezKomentarzy(nazwa,"^[%s_]*");
local modyfikatory="";
repeat
local ile_zmieniono=0;
local __modyfikatory=nil;
nazwa=mw.ustring.gsub(nazwa,"^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE")..")",function(poczatek,kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
__modyfikatory=poczatek;
return "";
end;
end);
nazwa=mw.ustring.gsub(nazwa,"^(([%s_]*)(#?)([%s_]*)([^%s#:_]+)([%s_]*:))",function(calosc,a,b,c,d,e)
d=b..TekstBezKomentarzy(d)..":";
if(tabela_modyfikatorow[d])then
ile_zmieniono=ile_zmieniono+1;
modyfikatory=modyfikatory..(__modyfikatory or "")..calosc;
return "";
end;
return nil;
end);
if(ile_zmieniono==0)then
nazwa=(__modyfikatory or "")..nazwa;
end;
until (ile_zmieniono==0);
return nazwa,modyfikatory;
end;
local ZamieniajZnakiNaMikroSzablony=function(szablon,__funkcja)
szablon=mw.ustring.gsub(szablon,"(.)",function(znak)
local odpowied;
if(__funkcja)then
odpowied=__funkcja(znak);
else
odpowied=tab_linki[znak] or tab_szablonowa[znak];
end;
if(odpowied)then return odpowied;end;
return znak;
end);
return szablon;
end;
local CzyBezDwukropka=function(dwukropki)
return (not mw.ustring.match(dwukropki,":") and "tak" or "");
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local szablon_old=szablon;
szablon=TekstBezKomentarzy(szablon);
local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["int:"]))
and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
))then
local UstawianieLinkowe=function(szablon,ktore)
local SzablonStrona=function(szablon)
local strona=TekstBezKomentarzy(szablon);
strona=parametry_modul["Odstępy"](strona);
local nazwa,modyfikatory=UsuwanieModyfikatoroweStron(szablon,tabela_modyfikatorow);
strona=mw.ustring.gsub(strona,"=","{{=}}");
nazwa=mw.ustring.gsub(nazwa,"=","{{=}}");
return "{{s|oryginalna=tak|analiza=tak|"..strona
.."|nazwa="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..nazwa..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
.."|modyfikatory="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..modyfikatory..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
..(ktore and "|" or "}}");
end;
if(ktore)then
szablon=mw.ustring.gsub(szablon,"=","{{=}}");
szablon,ile=mw.ustring.gsub(szablon,"^{{([^|]-)|",function(szablon)
return SzablonStrona(szablon);
end);
else
szablon=mw.ustring.gsub(szablon,"^{{([^|]-)}}",function(szablon)
return SzablonStrona(szablon);
end);
end;
return szablon;
end;
if(mw.ustring.match(szablon_old,"|"))then
if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,true);
end;
else
if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
if(pseudoszablon)then
if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne(pseudoszablon)))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,false);
end;
else
return UstawianieLinkowe(szablon_old,false);
end;
end;
else
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
elseif(obiekt=="LINKW")then
local __szablon=TekstBezKomentarzy(szablon);
local __dwukropki,__strona=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)%]%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)%]%]$");
return "{{l|"..strona.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}"
end;
else
local __dwukropki,__strona,__nazwa=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)|(.*)%]%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)|(.*)%]%]$");
return "{{l|"..strona.."|"..nazwa.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}";
end;
end;
elseif(obiekt=="LINKZ")then
local __szablon=TekstBezKomentarzy(szablon);
local __strona=mw.ustring.match(__szablon,"^%[%s*(%S+)%s*%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s*)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
else
local __strona,__nazwa=mw.ustring.match(__szablon,"^%[(%s*%S+)(%s+.-)%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s+.-)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
end;
elseif(obiekt=="ZMIENNA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="NOWIKI")
or(obiekt=="PRE")
or(obiekt=="MATH")
or(obiekt=="ŹRÓDŁO")
or(obiekt=="GALERIA")
or(obiekt=="MAPAOBRAZU")
or(obiekt=="PUDEŁKOWEJŚCIA")
)then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_linki[znak] or tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="QUIZ")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="ZNACZNIK")or(obiekt=="INCLUDE"))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=(znak~="\"")and tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="ATRYBUTY")then
szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("(UCIECZKI)"),function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end);
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="WIKITABELA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tabela_wikitabelowa[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="INNEPRE")then
--szablon=mw.ustring.gsub(szablon,"^[^%S\n]","&nbsp;");
return szablon;
else
return szablon;
end;
end);
tekst=frame:getParent():preprocess(tekst);
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),function(kod)
kod=tonumber(kod);
local komentarz=tab_komentarze[kod];
komentarz=mw.ustring.gsub(komentarz,"^<!%-%-(.-)%-%->$",function(zawartosc)
return "<!--"..zawartosc.."-->";
end);
return komentarz;
end);
return tekst;
end;
p.WikikodStrony = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
if(not parametry_modul.CzyTak(nazwa))then return;end;
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or false;
if(not text)then return;end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
return text;
end;
function p.LuaSubst(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args[1] or args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
local inkludowany=parametry_modul.CzyTak(args["inkludowana"]);
if(inkludowany)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
else
local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
if(dokumentacja)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","");
end;
end;
return tekst;
end;
p["LuaSurowySzablonSubst"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
---
---
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,nil,
function(szablon,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(nazwa_szablonu=="Moduł:Ramka")then
local Funkcja=tabela_parametrow_szablonu[true];
if((not Funkcja)or(Funkcja~="Szablon"))then return;end;
local pelna_nazwa_szablonu=tabela_parametrow_szablonu["Nazwa"];
if(not pelna_nazwa_szablonu)then return;end;
pelna_nazwa_szablonu="Szablon:"..pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,pelna_nazwa_szablonu,nil,false,nil,true,true);
if(not tekst)then return;end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(wartosc_zmiennej)then
return wartosc_zmiennej;
end;
end;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
return tekst;
end;
end);
if(wynik)then return wynik;end;
end;
return;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
local specjalne_modul=require("Module:Specjalne");
local tab_modyfikatory={["#if:"]=true,["#ifeq:"]=true,["#ifexist:"]=true,["#ifexpr:"]=true,};
local tab_mediawiki=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tabela_zmiennych={};
local tablica_danych_parametrow_szablonu_strony={};
local function UsuwaniePseudoSzablonowe(szablon)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tab_mediawiki(nazwa_szablonu))then
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tabela_modyfikatorow)then
for name,value in pairs(tabela_modyfikatorow)do
if(tab_modyfikatory[name])then
local warunek,dalej=mw.ustring.match(szablon,"^{{([^{}|]+)(.-)$");
if(warunek)then
local iterator=szablonowe_modul.IteratorSzablonowyZakodowanegoTekstu(nil,dalej,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_usunac_kreski_pionowe=false;
for szablon_dalej,obiekt_dalej,kod_dalej in iterator do
if(obiekt_dalej=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon_dalej,tablica_danych_parametrow_szablonu_strony,kod_dalej,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((mw.ustring.match(nazwa_szablonu,"^Infobox .*$"))or(mw.ustring.match(nazwa_szablonu,"^Link%u")))then
return true;
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
elseif(obiekt_dalej=="LINKW")then
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon_dalej);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
end;
end;
if(czy_usunac_kreski_pionowe)then
warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
end);
return "{{"..warunek..dalej;
else
local warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul);
return "{{"..warunek..dalej;
end;
end;
end;
end;
end;
end;
local function PlikowePrzetwarzanie(szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieDivowe(szablon,obiekt,kod)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
return wynik;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieSzablonowe(szablon,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local infobox=mw.ustring.match(nazwa_szablonu,"^Infobox .*$");
local link=mw.ustring.match(nazwa_szablonu,"^Link%u");
if((infobox)or(link))then
if((link)and(not infobox))then
szablon="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
end;
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod ,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
elseif(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(((infobox)and(b==""))or((link)and((tonumber(a1))or(tabela_zmiennych[a1]))))then
return a..c;
end;
end);
return szablon;
end;
return nil,true;
end);
return szablon;
end;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
return wynik;
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
szablon=PrzetwarzanieSzablonowe(szablon,obiekt,kod);
if(szablon)then return szablon;end;
elseif(obiekt=="ZMIENNA")then
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
return szablon;
end;
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyPlik"](szablon))then
szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
return szablon;
else
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
if(wynik)then
local spanramka="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
return spanramka;
end;
end;
end;
return szablon;
end);
return tekst;
end;
function p.NowaLinia(frame)
return "\n";
end;
function p.Nowiki(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local PobierzParametr=parametry_modul.PobierzParametr(args);
local tekst=PobierzParametr("tekst") or PobierzParametr(1);
local sprawdz_modul=require("Module:Sprawdź");
tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},}
tekst=mw.ustring.gsub(tekst,"([&<>={}|!%+%-%*;:#\"\'%[%]/\\])",function(znak)
return "&#"..mw.ustring.byte(znak)..";";
end);
return tekst;
end;
function p.FunkcjaLua(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local modul=require("Module:"..(args[1] or args["moduł"]));
if(modul)then
if(modul[asgs[2] or args["nazwa"] or args["funkcja"]])then
local args2=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,{[1]=true,["moduł"]=true,[2]=true,nazwa=true,funkcja=true,["wyspecjalizowana"]=true,})
return modul[args[2] or args["nazwa"] or args["funkcja"]](args2);
end;
end;
end;
p["RozwińSzablonWzględemPodanychParametrów"] = function (frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame)
local PobierzParametr=parametry_modul.PobierzParametr(args);
local nazwa=PobierzParametr("Nazwa strony") or PobierzParametr("Nazwa") or "Nazwa strony";
local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or nil;
if(not text)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}};
end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
local bezkluczy={
["Nazwa strony"]=true,
["Nazwa"]=true,
["Miano przestrzeni nazw"]=true,
["Przestrzeń"]=true,
["wyspecjalizowana"]=true,
["nie rozwiń"]=true,
};
local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy);
local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab};
text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text);
return text;
end;
p["LiczbaBajtówCiąguDoNormy"] = function(frame)
local str=frame.args[1] or frame.args["ciąg"];
local ile=tonumber(frame.args[2] or frame.args["norma"]);
if(not ile)then return #str;end;
if(#str<=ile)then
return #str;
end;
return nil;
end;
p["LiczbaStronJakoPozycjeDanejKategorii"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local kategoria=parametry_modul.CzyTak(args["kategoria"]) and args["kategoria"] or "Category:Przykładowa kategoria";
local kat={
["subcats"]=true,
["files"]=true,
["pages"]=true,
}
local typ=args["typ"];
typ=(typ and kat[args["typ"]]) and args["typ"] or "all";
local nazwy_modul=require("Module:Nazwy");
kategoria=nazwy_modul["NAZWASTRONY"](kategoria);
return mw.site.stats.pagesInCategory(kategoria,typ);
end;
p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] = function(frame,tablica_danych_parametrow_szablonu_strony,kod)
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony;
end;
end;
end;
---
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny");
if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end;
local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący");
local adres;
local dwukropek;
if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then
if(adres_biezacy)then
adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy..adres_wzgledny;
else
return nil;
end;
else
if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then
if(adres_biezacy)then
adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy.."/"..adres_wzgledny;
else
return nil;
end;
else
adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:","");
adres=adres_wzgledny;
end;
end;
if(adres~="")then
while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do
adres=mw.ustring.gsub(adres,"/[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/+","/");
adres=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
adres=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
end;
adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/");
adres=mw.ustring.gsub(adres,"^[%s_]*/+","");
adres=mw.ustring.gsub(adres,"[%s_]*/+","/");
adres=mw.ustring.gsub(adres,"/+[%s_]*$","");
adres=mw.ustring.gsub(adres,"^[%s_]*","");
adres=mw.ustring.gsub(adres,"[%s_]*$","");
adres=mw.ustring.gsub(adres,"[%s_]+"," ");
end;
local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres;
-----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik;
end;
-----
return wynik;
end;
function p.PrzekierowanieDoStrony(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_modulu=PobierzParametr(1);
local html_modul=require("Module:Html");
local pudelko_modul=require("Module:Pudełko");
nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu);
local czy_nazwa_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_modulu);
if(czy_nazwa_niepoprawna)then
mw.log("Niepoprawna nazwa modulu strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
local title=mw.title.makeTitle('',nazwa_modulu);
if(title)then
local strona=title.redirectTarget;
if(not strona)then return;end;
return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText);
else
mw.log("Nieprawidłowy format nazwy modułu przy uzyskiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
end;
function p.UsuwanieKomentarzowe(tekst,__FUNKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"(<!%-%-.-%-%->)",__FUNKCJA_USUWANIA or "");
return tekst;
end;
function p.UsuwanieZnakoweKontrolneNiewidzialne(tekst,__FUKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"([^%C\n\t ])",__FUKCJA_USUWANIA or "");
return tekst;
end;
p["Forma wyrażenia po liczbie"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_table_frame=parametry_modul.TypeTable(frame);
local args=czy_table_frame and (frame.args or frame) or nil;
local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0");
local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów";
local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór";
local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory";
local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]);
local specjalne_modul=require("Module:Specjalne");
local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1);
if(not liczba_number)then return "(błąd)";end;
local liczba_number=math.abs(liczba_number);
if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end;
if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end;
if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
local reszta=math.fmod(liczba_number,20);
if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
if(reszta==1)then
if(liczba_number<20)then
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;
else
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2
end;
end;
if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;
end;
return p;
bdq4nk0l7tlmyy8ood5dz2y1k8bz8yz
557693
557692
2026-09-26T22:06:51Z
Persino
2851
557693
Scribunto
text/plain
local p={};
p["Pierwszy niepusty"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local i=1;
local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](args,"test");
local licznik=1;
while true do
local test=args["test"..i];
local _i=args[i];
local zmienna=test or _i;
local czy_tak=parametry_modul.CzyTak(zmienna);
if(czy_tak)then
return (_i)and _i or "{{{"..i.."}}}";
end;
if(licznik>=liczba_elementow_w_tablicy_args)then return;end;
if(zmienna)then licznik=licznik+1;end;
i=i+1;
end;
end;
function p.NowikiParametr(frame)
local parametr=frame.args[1];
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
parametr=mw.ustring.gsub(parametr,"(.)",function(s)
return techniczne_dane_modul.tablica_szablonowa[s] or techniczne_dane_modul.tablica_linki[s] or techniczne_dane_modul.tablica_tagowa[s];
end);
return parametr;
end;
function p.EncodeParametr(frame)
local parametr=frame.args[1];
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b)
return a..mw.text.encode(str)..b;
end)
parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str)
local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+");
if(znacznik)then
znacznik=mw.getContentLanguage():lc(znacznik);
local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik];
if(not czy_znacznik)then
return "&lt;"..znak..mw.text.encode(str).."&gt;";
end;
end;
end);
parametr=mw.text.decode(parametr);
parametr=mw.text.encode(parametr);
return parametr;
end;
p["PełnaNazwaOpisuModułu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local pelna_nazwa_strony=PobierzParametr(1) or PobierzParametr("nazwa");
local komunikat = mw.message.new('Scribunto-doc-page-name', '$1');
local zawartosc_komunikatu;
if(komunikat:exists())then
zawartosc_komunikatu=komunikat:plain();
zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu);
else
zawartosc_komunikatu="Module:$1/opis";
end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-");
if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then
local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej);
local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony)
local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu);
return pelna_strona_opisu;
else
return pelna_nazwa_strony_podanej_lub_aktualnej;
end;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_przestrzeni_nazw_lub_jego_identyfikator=PobierzParametr(1) or PobierzParametr("nazwa");
local klucz_projektu=PobierzParametr("klucz projektu");
local kod_jezyka=PobierzParametr("kod języka");
local kod_projektu=PobierzParametr("kod projektu");
local wiki_modul=require("Module:Wiki");
local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local nazwy_modul=require("Module:Nazwy");
local uchwyt_przestrzeni_nazw;
if(czy_biezace_wiki)then
uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",};
else
uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",};
end;
if(uchwyt_przestrzeni_nazw)then
return "tak";
else
return;
end;
end;
p["WzórBezOdróżnianiaWielkościLiterNazwy"] =function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor, _ = mw.ustring.gsub(nazwa,"(.)",
function (s)
return (
(mw.ustring.match(s,"^%a$"))
and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]")
or (
((not mw.ustring.match(s,"^[%s_]$")) and ("%"..s) or ("[%s_]+"))
)
);
end
);
return wzor;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
local wzor=p["WzórBezOdróżnianiaWielkościLiterNazwy"](frame);
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor,_=mw.ustring.gsub(strona,"([%[%]%(%)%+%-%*%?%.%^%$%%'])","%%%1");
wzor,_=mw.ustring.gsub(wzor,"^(.)",function(s)return "["..mw.ustring.upper(s)..mw.ustring.lower(s).."]";end);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+");
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórPełnejNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona);
if(nazwa_przestrzeni~="")then
nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni);
end;
nazwa_strony=p["WzórNazwyStrony"](nazwa_strony);
return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony;
end;
p["TekstBezOdwołańDoParametrówWeWzorze"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%%%","%%%%%%");
tekst=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1");
return tekst;
end;
p["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%(%a+)","%%%%%1");
return tekst;
end;
p["PrzekształćWzórDoCzystegoTekstu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
return tekst;
end;
function p.CzyStronaIstniejeJejParametry(nazwa_strony_lub_uchwyt_strony,czy_zawartosc)
local uchwyt_strony;
local parametry_modul=require("Module:Parametry");
local czy_string=parametry_modul.TypeString(nazwa_strony_lub_uchwyt_strony);
local TempFunc=function(uchwyt_strony)
if(czy_zawartosc)then
return nil,nil,false;
else
return false;
end;
end;
if(czy_string)then
uchwyt_strony = mw.title.makeTitle('',nazwa_strony_lub_uchwyt_strony);
if(not uchwyt_strony)then return TempFunc();end;
else
uchwyt_strony=nazwa_strony_lub_uchwyt_strony;
if(not uchwyt_strony)then return TempFunc();end;
end;
local id=uchwyt_strony.namespace;
if((id==-1)or(id==-2))then
local czy_istnieje=uchwyt_strony and uchwyt_strony.exists or nil;
if(not czy_zawartosc)then
return czy_istnieje;
else
return uchwyt_strony,nil,czy_istnieje;
end;
else
local tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
if(czy_zawartosc)then
if(not tekst_artykulu)then
return uchwyt_strony,nil,false;
end;
return uchwyt_strony,tekst_artykulu,true;
end;
if(not tekst_artykulu)then
return false;
end;
return true;
end;
end;
function p.PoliczZbiory(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local tekst=parametry_modul.CzyTak(args["tekst"]);
local liczba_istniejacych_zbiorow=0;
local tabela_uchwytow_stron={};
for _,nazwa_strony in ipairs(args) do
local uchwyt_strony,tekst_artykulu,czy_istnieje = p.CzyStronaIstniejeJejParametry(nazwa_strony,true);
tabela_uchwytow_stron[#tabela_uchwytow_stron+1]={uchwyt_strony,tekst_artykulu,};
if((uchwyt_strony)and(czy_istnieje)and((not tekst)or((tekst)and(tekst_artykulu))))then
liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
end;
end;
return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
function p.TransformacjaWzoru(ciag)
return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1");
end;
p["WyświetlajKodySpecjalne"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local hash=html_modul.KodHTMLZnaku("#");
local sr=html_modul.KodHTMLZnaku(";");
text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
return text;
end;
function p.Wikikod(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
local nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local szablonowe_modul=require("Module:Szablonowe");
local tab_komentarze={};
local licznik_komentarze=1;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true,nil,nil,nil,nil,function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}};
end;
tekst=p["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
local html_modul=require("Module:Html");
tekst=mw.ustring.gsub(tekst,"&(%a+);","&%1;");
tekst=mw.ustring.gsub(tekst,"&#(%d+);","&#%1;");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tab_szablonowa=techniczne_dane_modul.tablica_szablonowa;
local tab_linki=techniczne_dane_modul.tablica_linki;
local tab_tagow=techniczne_dane_modul.tablica_tagowa;
local tabela_wikitabelowa=techniczne_dane_modul.tabela_wikitabelowa;
local tab_zmienne=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe")
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local TekstBezKomentarzy=function(tekst,poczatek)
tekst=mw.ustring.gsub(tekst,(poczatek or "")..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE"),function(kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
return "";
end;
return nil;
end);
--tekst=parametry_modul["Odstępy"](tekst);
return tekst;
end;
local UsuwanieModyfikatoroweStron=function(nazwa,tabela_modyfikatorow)
if(not tabela_modyfikatorow)then return nazwa,"";end;
--local nazwa,komentarz=TekstBezKomentarzy(nazwa,"^[%s_]*");
local modyfikatory="";
repeat
local ile_zmieniono=0;
local __modyfikatory=nil;
nazwa=mw.ustring.gsub(nazwa,"^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE")..")",function(poczatek,kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
__modyfikatory=poczatek;
return "";
end;
end);
nazwa=mw.ustring.gsub(nazwa,"^(([%s_]*)(#?)([%s_]*)([^%s#:_]+)([%s_]*:))",function(calosc,a,b,c,d,e)
d=b..TekstBezKomentarzy(d)..":";
if(tabela_modyfikatorow[d])then
ile_zmieniono=ile_zmieniono+1;
modyfikatory=modyfikatory..(__modyfikatory or "")..calosc;
return "";
end;
return nil;
end);
if(ile_zmieniono==0)then
nazwa=(__modyfikatory or "")..nazwa;
end;
until (ile_zmieniono==0);
return nazwa,modyfikatory;
end;
local ZamieniajZnakiNaMikroSzablony=function(szablon,__funkcja)
szablon=mw.ustring.gsub(szablon,"(.)",function(znak)
local odpowied;
if(__funkcja)then
odpowied=__funkcja(znak);
else
odpowied=tab_linki[znak] or tab_szablonowa[znak];
end;
if(odpowied)then return odpowied;end;
return znak;
end);
return szablon;
end;
local CzyBezDwukropka=function(dwukropki)
return (not mw.ustring.match(dwukropki,":") and "tak" or "");
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local szablon_old=szablon;
szablon=TekstBezKomentarzy(szablon);
local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["int:"]))
and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
))then
local UstawianieLinkowe=function(szablon,ktore)
local SzablonStrona=function(szablon)
local strona=TekstBezKomentarzy(szablon);
strona=parametry_modul["Odstępy"](strona);
local nazwa,modyfikatory=UsuwanieModyfikatoroweStron(szablon,tabela_modyfikatorow);
strona=mw.ustring.gsub(strona,"=","{{=}}");
nazwa=mw.ustring.gsub(nazwa,"=","{{=}}");
return "{{s|oryginalna=tak|analiza=tak|"..strona
.."|nazwa="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..nazwa..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
.."|modyfikatory="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..modyfikatory..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
..(ktore and "|" or "}}");
end;
if(ktore)then
szablon=mw.ustring.gsub(szablon,"=","{{=}}");
szablon,ile=mw.ustring.gsub(szablon,"^{{([^|]-)|",function(szablon)
return SzablonStrona(szablon);
end);
else
szablon=mw.ustring.gsub(szablon,"^{{([^|]-)}}",function(szablon)
return SzablonStrona(szablon);
end);
end;
return szablon;
end;
if(mw.ustring.match(szablon_old,"|"))then
if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,true);
end;
else
if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
if(pseudoszablon)then
if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne(pseudoszablon)))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,false);
end;
else
return UstawianieLinkowe(szablon_old,false);
end;
end;
else
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
elseif(obiekt=="LINKW")then
local __szablon=TekstBezKomentarzy(szablon);
local __dwukropki,__strona=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)%]%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)%]%]$");
return "{{l|"..strona.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}"
end;
else
local __dwukropki,__strona,__nazwa=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)|(.*)%]%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)|(.*)%]%]$");
return "{{l|"..strona.."|"..nazwa.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}";
end;
end;
elseif(obiekt=="LINKZ")then
local __szablon=TekstBezKomentarzy(szablon);
local __strona=mw.ustring.match(__szablon,"^%[%s*(%S+)%s*%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s*)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
else
local __strona,__nazwa=mw.ustring.match(__szablon,"^%[(%s*%S+)(%s+.-)%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s+.-)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
end;
elseif(obiekt=="ZMIENNA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="NOWIKI")
or(obiekt=="PRE")
or(obiekt=="MATH")
or(obiekt=="ŹRÓDŁO")
or(obiekt=="GALERIA")
or(obiekt=="MAPAOBRAZU")
or(obiekt=="PUDEŁKOWEJŚCIA")
)then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_linki[znak] or tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="QUIZ")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="ZNACZNIK")or(obiekt=="INCLUDE"))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=(znak~="\"")and tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="ATRYBUTY")then
szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("(UCIECZKI)"),function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end);
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="WIKITABELA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tabela_wikitabelowa[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="INNEPRE")then
--szablon=mw.ustring.gsub(szablon,"^[^%S\n]","&nbsp;");
return szablon;
else
return szablon;
end;
end);
tekst=frame:getParent():preprocess(tekst);
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),function(kod)
kod=tonumber(kod);
local komentarz=tab_komentarze[kod];
komentarz=mw.ustring.gsub(komentarz,"^<!%-%-(.-)%-%->$",function(zawartosc)
return "<!--"..zawartosc.."-->";
end);
return komentarz;
end);
return tekst;
end;
p.WikikodStrony = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
if(not parametry_modul.CzyTak(nazwa))then return;end;
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or false;
if(not text)then return;end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
return text;
end;
function p.LuaSubst(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args[1] or args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
local inkludowany=parametry_modul.CzyTak(args["inkludowana"]);
if(inkludowany)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
else
local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
if(dokumentacja)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","");
end;
end;
return tekst;
end;
p["LuaSurowySzablonSubst"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
---
---
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,nil,
function(szablon,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(nazwa_szablonu=="Moduł:Ramka")then
local Funkcja=tabela_parametrow_szablonu[true];
if((not Funkcja)or(Funkcja~="Szablon"))then return;end;
local pelna_nazwa_szablonu=tabela_parametrow_szablonu["Nazwa"];
if(not pelna_nazwa_szablonu)then return;end;
pelna_nazwa_szablonu="Szablon:"..pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,pelna_nazwa_szablonu,nil,false,nil,true,true);
if(not tekst)then return;end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(wartosc_zmiennej)then
return wartosc_zmiennej;
end;
end;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
return tekst;
end;
end);
if(wynik)then return wynik;end;
end;
return;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
local specjalne_modul=require("Module:Specjalne");
local tab_modyfikatory={["#if:"]=true,["#ifeq:"]=true,["#ifexist:"]=true,["#ifexpr:"]=true,};
local tab_mediawiki=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tabela_zmiennych={};
local tablica_danych_parametrow_szablonu_strony={};
local function UsuwaniePseudoSzablonowe(szablon)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tab_mediawiki(nazwa_szablonu))then
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tabela_modyfikatorow)then
for name,value in pairs(tabela_modyfikatorow)do
if(tab_modyfikatory[name])then
local warunek,dalej=mw.ustring.match(szablon,"^{{([^{}|]+)(.-)$");
if(warunek)then
local iterator=szablonowe_modul.IteratorSzablonowyZakodowanegoTekstu(nil,dalej,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_usunac_kreski_pionowe=false;
for szablon_dalej,obiekt_dalej,kod_dalej in iterator do
if(obiekt_dalej=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon_dalej,tablica_danych_parametrow_szablonu_strony,kod_dalej,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((mw.ustring.match(nazwa_szablonu,"^Infobox .*$"))or(mw.ustring.match(nazwa_szablonu,"^Link%u")))then
return true;
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
elseif(obiekt_dalej=="LINKW")then
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon_dalej);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
end;
end;
if(czy_usunac_kreski_pionowe)then
warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
end);
return "{{"..warunek..dalej;
else
local warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul);
return "{{"..warunek..dalej;
end;
end;
end;
end;
end;
end;
local function PlikowePrzetwarzanie(szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieDivowe(szablon,obiekt,kod)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
return wynik;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieSzablonowe(szablon,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local infobox=mw.ustring.match(nazwa_szablonu,"^Infobox .*$");
local link=mw.ustring.match(nazwa_szablonu,"^Link%u");
if((infobox)or(link))then
if((link)and(not infobox))then
szablon="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
end;
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod ,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
elseif(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(((infobox)and(b==""))or((link)and((tonumber(a1))or(tabela_zmiennych[a1]))))then
return a..c;
end;
end);
return szablon;
end;
return nil,true;
end);
return szablon;
end;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
return wynik;
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
szablon=PrzetwarzanieSzablonowe(szablon,obiekt,kod);
if(szablon)then return szablon;end;
elseif(obiekt=="ZMIENNA")then
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
return szablon;
end;
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyPlik"](szablon))then
szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
return szablon;
else
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
if(wynik)then
local spanramka="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
return spanramka;
end;
end;
end;
return szablon;
end);
return tekst;
end;
function p.NowaLinia(frame)
return "\n";
end;
function p.Nowiki(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local PobierzParametr=parametry_modul.PobierzParametr(args);
local tekst=PobierzParametr("tekst") or PobierzParametr(1);
local sprawdz_modul=require("Module:Sprawdź");
tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},}
tekst=mw.ustring.gsub(tekst,"([&<>={}|!%+%-%*;:#\"\'%[%]/\\])",function(znak)
return "&#"..mw.ustring.byte(znak)..";";
end);
return tekst;
end;
function p.FunkcjaLua(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local modul=require("Module:"..(args[1] or args["moduł"]));
if(modul)then
if(modul[asgs[2] or args["nazwa"] or args["funkcja"]])then
local args2=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,{[1]=true,["moduł"]=true,[2]=true,nazwa=true,funkcja=true,["wyspecjalizowana"]=true,})
return modul[args[2] or args["nazwa"] or args["funkcja"]](args2);
end;
end;
end;
p["RozwińSzablonWzględemPodanychParametrów"] = function (frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame)
local PobierzParametr=parametry_modul.PobierzParametr(args);
local nazwa=PobierzParametr("Nazwa strony") or PobierzParametr("Nazwa") or "Nazwa strony";
local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or nil;
if(not text)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}};
end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
local bezkluczy={
["Nazwa strony"]=true,
["Nazwa"]=true,
["Miano przestrzeni nazw"]=true,
["Przestrzeń"]=true,
["wyspecjalizowana"]=true,
["nie rozwiń"]=true,
};
local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy);
local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab};
text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text);
return text;
end;
p["LiczbaBajtówCiąguDoNormy"] = function(frame)
local str=frame.args[1] or frame.args["ciąg"];
local ile=tonumber(frame.args[2] or frame.args["norma"]);
if(not ile)then return #str;end;
if(#str<=ile)then
return #str;
end;
return nil;
end;
p["LiczbaStronJakoPozycjeDanejKategorii"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local kategoria=parametry_modul.CzyTak(args["kategoria"]) and args["kategoria"] or "Category:Przykładowa kategoria";
local kat={
["subcats"]=true,
["files"]=true,
["pages"]=true,
}
local typ=args["typ"];
typ=(typ and kat[args["typ"]]) and args["typ"] or "all";
local nazwy_modul=require("Module:Nazwy");
kategoria=nazwy_modul["NAZWASTRONY"](kategoria);
return mw.site.stats.pagesInCategory(kategoria,typ);
end;
p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] = function(frame,tablica_danych_parametrow_szablonu_strony,kod)
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony;
end;
end;
end;
---
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny");
if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end;
local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący");
local adres;
local dwukropek;
if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then
if(adres_biezacy)then
adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy..adres_wzgledny;
else
return nil;
end;
else
if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then
if(adres_biezacy)then
adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy.."/"..adres_wzgledny;
else
return nil;
end;
else
adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:","");
adres=adres_wzgledny;
end;
end;
if(adres~="")then
while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do
adres=mw.ustring.gsub(adres,"/[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/+","/");
adres=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
adres=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
end;
adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/");
adres=mw.ustring.gsub(adres,"^[%s_]*/+","");
adres=mw.ustring.gsub(adres,"[%s_]*/+","/");
adres=mw.ustring.gsub(adres,"/+[%s_]*$","");
adres=mw.ustring.gsub(adres,"^[%s_]*","");
adres=mw.ustring.gsub(adres,"[%s_]*$","");
adres=mw.ustring.gsub(adres,"[%s_]+"," ");
end;
local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres;
-----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik;
end;
-----
return wynik;
end;
function p.PrzekierowanieDoStrony(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_modulu=PobierzParametr(1);
local html_modul=require("Module:Html");
local pudelko_modul=require("Module:Pudełko");
nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu);
local czy_nazwa_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_modulu);
if(czy_nazwa_niepoprawna)then
mw.log("Niepoprawna nazwa modulu strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
local title=mw.title.makeTitle('',nazwa_modulu);
if(title)then
local strona=title.redirectTarget;
if(not strona)then return;end;
return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText);
else
mw.log("Nieprawidłowy format nazwy modułu przy uzyskiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
end;
function p.UsuwanieKomentarzowe(tekst,__FUNKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"(<!%-%-.-%-%->)",__FUNKCJA_USUWANIA or "");
return tekst;
end;
function p.UsuwanieZnakoweKontrolneNiewidzialne(tekst,__FUKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"([^%C\n\t ])",__FUKCJA_USUWANIA or "");
return tekst;
end;
p["Forma wyrażenia po liczbie"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_table_frame=parametry_modul.TypeTable(frame);
local args=czy_table_frame and (frame.args or frame) or nil;
local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0");
local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów";
local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór";
local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory";
local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]);
local specjalne_modul=require("Module:Specjalne");
local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1);
if(not liczba_number)then return "(błąd)";end;
local liczba_number=math.abs(liczba_number);
if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end;
if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end;
if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
local reszta=math.fmod(liczba_number,20);
if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
if(reszta==1)then
if(liczba_number<20)then
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;
else
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2
end;
end;
if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;
end;
return p;
atosgd4ijqy5lvfpjp03zle8qejaupd
557694
557693
2026-09-26T22:37:24Z
Persino
2851
557694
Scribunto
text/plain
local p={};
p["Pierwszy niepusty"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local i=1;
local liczba_elementow_w_tablicy_args=parametry_modul["LiczbaElementówNienazwanychZPrzedrostkiemLubNieTablicy"](args,"test");
local licznik=1;
while true do
local test=args["test"..i];
local _i=args[i];
local zmienna=test or _i;
local czy_tak=parametry_modul.CzyTak(zmienna);
if(czy_tak)then
return (_i)and _i or "{{{"..i.."}}}";
end;
if(licznik>=liczba_elementow_w_tablicy_args)then return;end;
if(zmienna)then licznik=licznik+1;end;
i=i+1;
end;
end;
function p.NowikiParametr(frame)
local parametr=frame.args[1];
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
parametr=mw.ustring.gsub(parametr,"(.)",function(s)
return techniczne_dane_modul.tablica_szablonowa[s] or techniczne_dane_modul.tablica_linki[s] or techniczne_dane_modul.tablica_tagowa[s];
end);
return parametr;
end;
function p.EncodeParametr(frame)
local parametr=frame.args[1];
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
parametr=mw.ustring.gsub(parametr,"(\")([^\"]+)(\")",function(a,str,b)
return a..mw.text.encode(str)..b;
end)
parametr=mw.ustring.gsub(parametr,"<(/?)([^<>]+)>",function(znak,str)
local znacznik=mw.ustring.match(str,"^(%a+)$") or mw.ustring.match(str,"^(%a+)%s+");
if(znacznik)then
znacznik=mw.getContentLanguage():lc(znacznik);
local czy_znacznik=szablonowe_dane_modul.tablica_html_mechanizmu_mediawiki[znacznik];
if(not czy_znacznik)then
return "&lt;"..znak..mw.text.encode(str).."&gt;";
end;
end;
end);
parametr=mw.text.decode(parametr);
parametr=mw.text.encode(parametr);
return parametr;
end;
p["PełnaNazwaOpisuModułu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local pelna_nazwa_strony=PobierzParametr(1) or PobierzParametr("nazwa");
local komunikat = mw.message.new('Scribunto-doc-page-name', '$1');
local zawartosc_komunikatu;
if(komunikat:exists())then
zawartosc_komunikatu=komunikat:plain();
zawartosc_komunikatu=mw.getCurrentFrame():preprocess(zawartosc_komunikatu);
else
zawartosc_komunikatu="Module:$1/opis";
end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_strony_wedlug_strony_komunikatu=nazwy_modul["PEŁNANAZWASTRONY"](zawartosc_komunikatu);
local pelna_nazwa_strony_podanej_lub_aktualnej=pelna_nazwa_strony and nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony) or nazwy_modul["PEŁNANAZWASTRONY"]();
local wzor_pelnej_nazwy_strony=mw.ustring.gsub(pelna_nazwa_strony_wedlug_strony_komunikatu,"%$1",".-");
if(not mw.ustring.match(pelna_nazwa_strony_podanej_lub_aktualnej,"^"..wzor_pelnej_nazwy_strony.."$"))then
local nazwa_strony=nazwy_modul["NAZWASTRONY"](pelna_nazwa_strony_podanej_lub_aktualnej);
local przetworzona_nazwa_strony=p["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
local pelna_nazwa_strony_opisu, _=mw.ustring.gsub(zawartosc_komunikatu,"%$1",przetworzona_nazwa_strony)
local pelna_strona_opisu=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_strony_opisu);
return pelna_strona_opisu;
else
return pelna_nazwa_strony_podanej_lub_aktualnej;
end;
end;
p["CzyIstniejeDanaPrzestrzeńNazw"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_przestrzeni_nazw_lub_jego_identyfikator=PobierzParametr(1) or PobierzParametr("nazwa");
local klucz_projektu=PobierzParametr("klucz projektu");
local kod_jezyka=PobierzParametr("kod języka");
local kod_projektu=PobierzParametr("kod projektu");
local wiki_modul=require("Module:Wiki");
local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
local nazwy_modul=require("Module:Nazwy");
local uchwyt_przestrzeni_nazw;
if(czy_biezace_wiki)then
uchwyt_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,uchwyt="tak",};
else
uchwyt_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw_lub_jego_identyfikator,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,uchwyt="tak",};
end;
if(uchwyt_przestrzeni_nazw)then
return "tak";
else
return;
end;
end;
local ZnakRegex=function(s)
return (
(mw.ustring.match(s,"^%a$"))
and("["..mw.ustring.upper(s)..mw.ustring.lower(s).."]")
or (
((not mw.ustring.match(s,"^[%s_]$")) and ("%"..s) or ("[%s_]+"))
)
);
end;
p["WzórBezOdróżnianiaWielkościLiterNazwy"] =function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor, _ = mw.ustring.gsub(nazwa,"(.)",
function (s) return ZnakRegex(s);end
);
return wzor;
end;
p["WzórDanejPrzestrzeniNazw"] = function (frame)
local wzor=p["WzórBezOdróżnianiaWielkościLiterNazwy"](frame);
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local wzor,_=mw.ustring.gsub(strona,"([%[%]%(%)%+%-%*%?%.%^%$%%'])","%%%1");
wzor,_=mw.ustring.gsub(wzor,"^[%s_]*([^%s_])",
function (s) return ZnakRegex(s);end
);
wzor,_=mw.ustring.gsub(wzor,"[%s_]+","[%%s_]+")
wzor="[%s_]*"..wzor.."[%s_]*";
return wzor;
end;
p["WzórPełnejNazwyStrony"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local strona=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona);
local nazwa_strony=nazwy_modul["NAZWASTRONY"](strona);
if(nazwa_przestrzeni~="")then
nazwa_przestrzeni=p["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni);
end;
nazwa_strony=p["WzórNazwyStrony"](nazwa_strony);
return ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_strony;
end;
p["TekstBezOdwołańDoParametrówWeWzorze"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%%%","%%%%%%");
tekst=mw.ustring.gsub(tekst,"%%(%d+)","%%%%%1");
return tekst;
end;
p["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"%%(%a+)","%%%%%1");
return tekst;
end;
p["PrzekształćWzórDoCzystegoTekstu"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
tekst=mw.ustring.gsub(tekst,"([%^%$%(%)%%%.%[%]%*%+%-%?])","%%%1");
return tekst;
end;
function p.CzyStronaIstniejeJejParametry(nazwa_strony_lub_uchwyt_strony,czy_zawartosc)
local uchwyt_strony;
local parametry_modul=require("Module:Parametry");
local czy_string=parametry_modul.TypeString(nazwa_strony_lub_uchwyt_strony);
local TempFunc=function(uchwyt_strony)
if(czy_zawartosc)then
return nil,nil,false;
else
return false;
end;
end;
if(czy_string)then
uchwyt_strony = mw.title.makeTitle('',nazwa_strony_lub_uchwyt_strony);
if(not uchwyt_strony)then return TempFunc();end;
else
uchwyt_strony=nazwa_strony_lub_uchwyt_strony;
if(not uchwyt_strony)then return TempFunc();end;
end;
local id=uchwyt_strony.namespace;
if((id==-1)or(id==-2))then
local czy_istnieje=uchwyt_strony and uchwyt_strony.exists or nil;
if(not czy_zawartosc)then
return czy_istnieje;
else
return uchwyt_strony,nil,czy_istnieje;
end;
else
local tekst_artykulu = uchwyt_strony and uchwyt_strony:getContent() or nil;
if(czy_zawartosc)then
if(not tekst_artykulu)then
return uchwyt_strony,nil,false;
end;
return uchwyt_strony,tekst_artykulu,true;
end;
if(not tekst_artykulu)then
return false;
end;
return true;
end;
end;
function p.PoliczZbiory(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local tekst=parametry_modul.CzyTak(args["tekst"]);
local liczba_istniejacych_zbiorow=0;
local tabela_uchwytow_stron={};
for _,nazwa_strony in ipairs(args) do
local uchwyt_strony,tekst_artykulu,czy_istnieje = p.CzyStronaIstniejeJejParametry(nazwa_strony,true);
tabela_uchwytow_stron[#tabela_uchwytow_stron+1]={uchwyt_strony,tekst_artykulu,};
if((uchwyt_strony)and(czy_istnieje)and((not tekst)or((tekst)and(tekst_artykulu))))then
liczba_istniejacych_zbiorow=liczba_istniejacych_zbiorow+1;
end;
end;
return liczba_istniejacych_zbiorow,tabela_uchwytow_stron;
end;
function p.TransformacjaWzoru(ciag)
return mw.ustring.gsub(ciag,"[%^%$%(%)%%%.%[%]%*%+%-%?]","%%%1");
end;
p["WyświetlajKodySpecjalne"] = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("nazwa");
local html_modul=require("Module:Html");
local i=html_modul.KodHTMLZnaku("&");
local hash=html_modul.KodHTMLZnaku("#");
local sr=html_modul.KodHTMLZnaku(";");
text=mw.ustring.gsub(text,"&#(%d+);",i..hash.."%1"..sr);
text=mw.ustring.gsub(text,"&(%a+);",i.."%1"..sr);
return text;
end;
function p.Wikikod(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
local nazwa_modulu=((parametry_modul["CzyTakCiąg"](przestrzen)) and (przestrzen..":") or "")..(nazwa or "Przykłowa strona");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local szablonowe_modul=require("Module:Szablonowe");
local tab_komentarze={};
local licznik_komentarze=1;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,nazwa_modulu,nil,false,nil,true,nil,nil,nil,nil,function(tekst_artykulu)
tekst_artykulu=p.UsuwanieKomentarzowe(tekst_artykulu,function(komentarz)
local kod=szablonowe_modul.NormaKoduKodowaniaTekstu("KOMENTARZ",licznik_komentarze);
tab_komentarze[licznik_komentarze]=komentarz;
licznik_komentarze=licznik_komentarze+1;
return kod;
end);
return tekst_artykulu;
end);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nie ma takiej strony lub artykulu."}};
end;
tekst=p["TekstBezOdwołańDoParametrówWeWzorze"](tekst);
local html_modul=require("Module:Html");
tekst=mw.ustring.gsub(tekst,"&(%a+);","&%1;");
tekst=mw.ustring.gsub(tekst,"&#(%d+);","&#%1;");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tab_szablonowa=techniczne_dane_modul.tablica_szablonowa;
local tab_linki=techniczne_dane_modul.tablica_linki;
local tab_tagow=techniczne_dane_modul.tablica_tagowa;
local tabela_wikitabelowa=techniczne_dane_modul.tabela_wikitabelowa;
local tab_zmienne=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe")
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local TekstBezKomentarzy=function(tekst,poczatek)
tekst=mw.ustring.gsub(tekst,(poczatek or "")..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE"),function(kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
return "";
end;
return nil;
end);
--tekst=parametry_modul["Odstępy"](tekst);
return tekst;
end;
local UsuwanieModyfikatoroweStron=function(nazwa,tabela_modyfikatorow)
if(not tabela_modyfikatorow)then return nazwa,"";end;
--local nazwa,komentarz=TekstBezKomentarzy(nazwa,"^[%s_]*");
local modyfikatory="";
repeat
local ile_zmieniono=0;
local __modyfikatory=nil;
nazwa=mw.ustring.gsub(nazwa,"^([%s_]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("STARE")..")",function(poczatek,kod)
local kod=tonumber(kod);
local szablon_komentarz=tablica_analizy_obiektow_strony_dany_modul["STARE"][kod];
if(mw.ustring.match(szablon_komentarz,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ")))then
__modyfikatory=poczatek;
return "";
end;
end);
nazwa=mw.ustring.gsub(nazwa,"^(([%s_]*)(#?)([%s_]*)([^%s#:_]+)([%s_]*:))",function(calosc,a,b,c,d,e)
d=b..TekstBezKomentarzy(d)..":";
if(tabela_modyfikatorow[d])then
ile_zmieniono=ile_zmieniono+1;
modyfikatory=modyfikatory..(__modyfikatory or "")..calosc;
return "";
end;
return nil;
end);
if(ile_zmieniono==0)then
nazwa=(__modyfikatory or "")..nazwa;
end;
until (ile_zmieniono==0);
return nazwa,modyfikatory;
end;
local ZamieniajZnakiNaMikroSzablony=function(szablon,__funkcja)
szablon=mw.ustring.gsub(szablon,"(.)",function(znak)
local odpowied;
if(__funkcja)then
odpowied=__funkcja(znak);
else
odpowied=tab_linki[znak] or tab_szablonowa[znak];
end;
if(odpowied)then return odpowied;end;
return znak;
end);
return szablon;
end;
local CzyBezDwukropka=function(dwukropki)
return (not mw.ustring.match(dwukropki,":") and "tak" or "");
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local szablon_old=szablon;
szablon=TekstBezKomentarzy(szablon);
local pseudoszablon,tabela_modyfikatorow=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
if((pseudoszablon)and(((tabela_modyfikatorow)and((szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["int:"]))
and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
or((not tabela_modyfikatorow)and(not mw.ustring.match(pseudoszablon,"^[%s_]*#?[%s_]*a+[%s_]*:")))
))then
local UstawianieLinkowe=function(szablon,ktore)
local SzablonStrona=function(szablon)
local strona=TekstBezKomentarzy(szablon);
strona=parametry_modul["Odstępy"](strona);
local nazwa,modyfikatory=UsuwanieModyfikatoroweStron(szablon,tabela_modyfikatorow);
strona=mw.ustring.gsub(strona,"=","{{=}}");
nazwa=mw.ustring.gsub(nazwa,"=","{{=}}");
return "{{s|oryginalna=tak|analiza=tak|"..strona
.."|nazwa="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..nazwa..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
.."|modyfikatory="..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)..modyfikatory..szablonowe_modul.NormaKoduKodowaniaTekstu("OGRANICZNIK",1)
..(ktore and "|" or "}}");
end;
if(ktore)then
szablon=mw.ustring.gsub(szablon,"=","{{=}}");
szablon,ile=mw.ustring.gsub(szablon,"^{{([^|]-)|",function(szablon)
return SzablonStrona(szablon);
end);
else
szablon=mw.ustring.gsub(szablon,"^{{([^|]-)}}",function(szablon)
return SzablonStrona(szablon);
end);
end;
return szablon;
end;
if(mw.ustring.match(szablon_old,"|"))then
if(mw.ustring.match(szablon,"^{{[^|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."[^|]*|"))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,true);
end;
else
if(mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
if(pseudoszablon)then
if(((not tabela_modyfikatorow)or((not tabela_modyfikatorow["int:"])and(not tabela_modyfikatorow["#invoke:"])))and(tab_zmienne(pseudoszablon)))then
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
else
return UstawianieLinkowe(szablon_old,false);
end;
else
return UstawianieLinkowe(szablon_old,false);
end;
end;
else
szablon_old=mw.ustring.gsub(szablon_old,"(.)",tab_szablonowa);
return szablon_old;
end;
elseif(obiekt=="LINKW")then
local __szablon=TekstBezKomentarzy(szablon);
local __dwukropki,__strona=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)%]%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)%]%]$");
return "{{l|"..strona.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}"
end;
else
local __dwukropki,__strona,__nazwa=mw.ustring.match(__szablon,"^%[%[([%s_:]*)([^%[%]%|]+)|(.*)%]%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[%[([^%[%]%|]+)|(.*)%]%]$");
return "{{l|"..strona.."|"..nazwa.."|s="..__strona.."|bd="..CzyBezDwukropka(__dwukropki).."}}";
end;
end;
elseif(obiekt=="LINKZ")then
local __szablon=TekstBezKomentarzy(szablon);
local __strona=mw.ustring.match(__szablon,"^%[%s*(%S+)%s*%]$");
if(__strona)then
if(mw.ustring.match(__szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s*)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
else
local __strona,__nazwa=mw.ustring.match(__szablon,"^%[(%s*%S+)(%s+.-)%]$");
if(mw.ustring.match(__strona,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon);
return szablon;
else
local strona,nazwa=mw.ustring.match(szablon,"^%[(%s*%S+)(%s+.-)%]$");
return "{{z|"..strona.."|"..nazwa.."|s="..__strona.."}}";
end;
end;
elseif(obiekt=="ZMIENNA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="NOWIKI")
or(obiekt=="PRE")
or(obiekt=="MATH")
or(obiekt=="ŹRÓDŁO")
or(obiekt=="GALERIA")
or(obiekt=="MAPAOBRAZU")
or(obiekt=="PUDEŁKOWEJŚCIA")
)then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_linki[znak] or tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="QUIZ")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_szablonowa[znak] or tab_tagow[znak];
return odpowied;
end);
return szablon;
elseif((obiekt=="ZNACZNIK")or(obiekt=="INCLUDE"))then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=(znak~="\"")and tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="ATRYBUTY")then
szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("(UCIECZKI)"),function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end);
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tab_tagow[znak] or nil;
return odpowied;
end);
return szablon;
elseif(obiekt=="WIKITABELA")then
szablon=ZamieniajZnakiNaMikroSzablony(szablon,function(znak)
local odpowied=tabela_wikitabelowa[znak];
return odpowied;
end);
return szablon;
elseif(obiekt=="INNEPRE")then
--szablon=mw.ustring.gsub(szablon,"^[^%S\n]","&nbsp;");
return szablon;
else
return szablon;
end;
end);
tekst=frame:getParent():preprocess(tekst);
tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu("KOMENTARZ"),function(kod)
kod=tonumber(kod);
local komentarz=tab_komentarze[kod];
komentarz=mw.ustring.gsub(komentarz,"^<!%-%-(.-)%-%->$",function(zawartosc)
return "<!--"..zawartosc.."-->";
end);
return komentarz;
end);
return tekst;
end;
p.WikikodStrony = function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr("nazwa strony") or PobierzParametr("nazwa") or PobierzParametr(1);
local przestrzen=PobierzParametr("miano przestrzeni nazw") or PobierzParametr("przestrzeń") or "Template";
if(not parametry_modul.CzyTak(nazwa))then return;end;
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or false;
if(not text)then return;end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
return text;
end;
function p.LuaSubst(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args[1] or args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
local inkludowany=parametry_modul.CzyTak(args["inkludowana"]);
if(inkludowany)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
else
local dokumentacja=parametry_modul.CzyTak(args["dokumentacja"]);
if(dokumentacja)then
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","%1");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","");
end;
end;
return tekst;
end;
p["LuaSurowySzablonSubst"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local strona=args["strona"];
if(not strona)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Nazwa strony jest niepodana."}};
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,strona,nil,false,nil,true,true);
if(not tekst)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Niepoprawna nazwa strony lub nie istnieje."}};
end;
---
---
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_dane_modul=mw.loadData("Module:Techniczne/dane");
local tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,nil,
function(szablon,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(nazwa_szablonu=="Moduł:Ramka")then
local Funkcja=tabela_parametrow_szablonu[true];
if((not Funkcja)or(Funkcja~="Szablon"))then return;end;
local pelna_nazwa_szablonu=tabela_parametrow_szablonu["Nazwa"];
if(not pelna_nazwa_szablonu)then return;end;
pelna_nazwa_szablonu="Szablon:"..pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.PobierzSpecjalniePrzygotowanyPreWikikodStrony(nil,pelna_nazwa_szablonu,nil,false,nil,true,true);
if(not tekst)then return;end;
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(wartosc_zmiennej)then
return wartosc_zmiennej;
end;
end;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
return tekst;
end;
end);
if(wynik)then return wynik;end;
end;
return;
end,nil,nil,nil,nil,
function(tekst_artykulu,tab_element)
return nil,true,nil,true;
end,
function(nazwa)
return true;
end);
local specjalne_modul=require("Module:Specjalne");
local tab_modyfikatory={["#if:"]=true,["#ifeq:"]=true,["#ifexist:"]=true,["#ifexpr:"]=true,};
local tab_mediawiki=function(s)
return techniczne_dane_modul.nazwy_szablony_systemowe[s] or techniczne_dane_modul.nazwy_szablony_zdefiniowane[s];
end;
local tabela_zmiennych={};
local tablica_danych_parametrow_szablonu_strony={};
local function UsuwaniePseudoSzablonowe(szablon)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tab_mediawiki(nazwa_szablonu))then
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(tabela_modyfikatorow)then
for name,value in pairs(tabela_modyfikatorow)do
if(tab_modyfikatory[name])then
local warunek,dalej=mw.ustring.match(szablon,"^{{([^{}|]+)(.-)$");
if(warunek)then
local iterator=szablonowe_modul.IteratorSzablonowyZakodowanegoTekstu(nil,dalej,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_usunac_kreski_pionowe=false;
for szablon_dalej,obiekt_dalej,kod_dalej in iterator do
if(obiekt_dalej=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon_dalej,tablica_danych_parametrow_szablonu_strony,kod_dalej,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((mw.ustring.match(nazwa_szablonu,"^Infobox .*$"))or(mw.ustring.match(nazwa_szablonu,"^Link%u")))then
return true;
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
elseif(obiekt_dalej=="LINKW")then
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon_dalej);
if(wynik)then
czy_usunac_kreski_pionowe=true;
break;
end;
end;
end;
if(czy_usunac_kreski_pionowe)then
warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
end);
return "{{"..warunek..dalej;
else
local warunek=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,warunek,nil,tablica_analizy_obiektow_strony_dany_modul);
return "{{"..warunek..dalej;
end;
end;
end;
end;
end;
end;
local function PlikowePrzetwarzanie(szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieDivowe(szablon,obiekt,kod)
szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
end;
return szablon;
end;
return nil,true;
end);
return szablon;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
return wynik;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
end;
return nil,true;
end);
return szablon;
end;
local function PrzetwarzanieSzablonowe(szablon,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local infobox=mw.ustring.match(nazwa_szablonu,"^Infobox .*$");
local link=mw.ustring.match(nazwa_szablonu,"^Link%u");
if((infobox)or(link))then
if((link)and(not infobox))then
szablon="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
end;
local szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,szablon,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod ,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
if(wynik)then return wynik;end;
return nil,true;
elseif(obiekt=="ZMIENNA")then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(((infobox)and(b==""))or((link)and((tonumber(a1))or(tabela_zmiennych[a1]))))then
return a..c;
end;
end);
return szablon;
end;
return nil,true;
end);
return szablon;
end;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local wynik=PrzetwarzanieParserowe(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);
if(wynik)then return wynik;end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
local wynik=((not mw.ustring.match(szablon,"^{{[^{}|]+}}$"))and(not mw.ustring.match(szablon,"^{{[^{}|]+|[^{}]*}}$")));
return wynik;
end,
function(szablon,obiekt,kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
return false;
end);
return wynik;
end;
tekst=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(nil,tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
szablon=PrzetwarzanieSzablonowe(szablon,obiekt,kod);
if(szablon)then return szablon;end;
elseif(obiekt=="ZMIENNA")then
local numerowana=mw.ustring.match(szablon,"^{{{%s*(%d+)%s*|");
if(not numerowana)then
szablon=UsuwaniePseudoSzablonowe(szablon);
szablon=mw.ustring.gsub(szablon,"^({{{%s*([^{}]-)%s*)|%s*([^%[%]]-)%s*(}}})$",function(a,a1,b,c)
if(b=="")then
return a..c;
end;
end);
return szablon;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
szablon=PrzetwarzanieDivowe(szablon,obiekt,kod);
return szablon;
end;
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyPlik"](szablon))then
szablon=PlikowePrzetwarzanie(szablon,obiekt,kod);
return szablon;
else
local wynik=specjalne_modul["CzyLinkWewnętrzny"](szablon);
if(wynik)then
local spanramka="<span style{{=}}\"position:relative;z-index:100;\">"..szablon.."</span>";
return spanramka;
end;
end;
end;
return szablon;
end);
return tekst;
end;
function p.NowaLinia(frame)
return "\n";
end;
function p.Nowiki(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local PobierzParametr=parametry_modul.PobierzParametr(args);
local tekst=PobierzParametr("tekst") or PobierzParametr(1);
local sprawdz_modul=require("Module:Sprawdź");
tekst=sprawdz_modul["UsuńKategorięSprawdzaniaParametrówSzablonu"]{args={[1]=tekst,},}
tekst=mw.ustring.gsub(tekst,"([&<>={}|!%+%-%*;:#\"\'%[%]/\\])",function(znak)
return "&#"..mw.ustring.byte(znak)..";";
end);
return tekst;
end;
function p.FunkcjaLua(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local modul=require("Module:"..(args[1] or args["moduł"]));
if(modul)then
if(modul[asgs[2] or args["nazwa"] or args["funkcja"]])then
local args2=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,{[1]=true,["moduł"]=true,[2]=true,nazwa=true,funkcja=true,["wyspecjalizowana"]=true,})
return modul[args[2] or args["nazwa"] or args["funkcja"]](args2);
end;
end;
end;
p["RozwińSzablonWzględemPodanychParametrów"] = function (frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame)
local PobierzParametr=parametry_modul.PobierzParametr(args);
local nazwa=PobierzParametr("Nazwa strony") or PobierzParametr("Nazwa") or "Nazwa strony";
local przestrzen=PobierzParametr("Miano przestrzeni nazw") or PobierzParametr("Przestrzeń") or "Template";
local title=mw.title.makeTitle(przestrzen,nazwa);
local text=title and title:getContent() or nil;
if(not text)then
local blad_modul=require("Module:Błąd");
return blad_modul.error{args={tag="span",tekst="Strona nie istnieje lub nie ma zawartości."}};
end;
text=mw.ustring.gsub(text,"(<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>.-</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>)","");
text=mw.ustring.gsub(text,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
local bezkluczy={
["Nazwa strony"]=true,
["Nazwa"]=true,
["Miano przestrzeni nazw"]=true,
["Przestrzeń"]=true,
["wyspecjalizowana"]=true,
["nie rozwiń"]=true,
};
local tab=parametry_modul["KopiujTabelęElementówBezTablicyKluczy"](args,bezkluczy);
local frame2=mw.getCurrentFrame():newChild{title=(parametry_modul.CzyTak(przestrzen)and (przestrzen..":"..nazwa) or nazwa),args=tab};
text=parametry_modul.CzyTak(frame.args["nie rozwiń"]) and text or frame2:preprocess(text);
return text;
end;
p["LiczbaBajtówCiąguDoNormy"] = function(frame)
local str=frame.args[1] or frame.args["ciąg"];
local ile=tonumber(frame.args[2] or frame.args["norma"]);
if(not ile)then return #str;end;
if(#str<=ile)then
return #str;
end;
return nil;
end;
p["LiczbaStronJakoPozycjeDanejKategorii"] = function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local kategoria=parametry_modul.CzyTak(args["kategoria"]) and args["kategoria"] or "Category:Przykładowa kategoria";
local kat={
["subcats"]=true,
["files"]=true,
["pages"]=true,
}
local typ=args["typ"];
typ=(typ and kat[args["typ"]]) and args["typ"] or "all";
local nazwy_modul=require("Module:Nazwy");
kategoria=nazwy_modul["NAZWASTRONY"](kategoria);
return mw.site.stats.pagesInCategory(kategoria,typ);
end;
p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"] = function(frame,tablica_danych_parametrow_szablonu_strony,kod)
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony;
end;
end;
end;
---
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local adres_wzgledny=PobierzParametr(1) or PobierzParametr("względny");
if(not mw.ustring.match(adres_wzgledny,"/"))then return adres_wzgledny;end;
local adres_biezacy=PobierzParametr(2) or PobierzParametr("bieżący");
local adres;
local dwukropek;
if(mw.ustring.match(adres_wzgledny,"^[%s_]*/"))then
if(adres_biezacy)then
adres_biezacy,dwukropek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy..adres_wzgledny;
else
return nil;
end;
else
if((mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres_wzgledny,"^[%s_]*%.[%s_]*%.[%s_]*/")))then
if(adres_biezacy)then
adres_biezacy,dwukrowek=mw.ustring.gsub(adres_biezacy,"^[%s_]*:","");
adres=adres_biezacy.."/"..adres_wzgledny;
else
return nil;
end;
else
adres_wzgledny,dwukropek=mw.ustring.gsub(adres_wzgledny,"^[%s_]*:","");
adres=adres_wzgledny;
end;
end;
if(adres~="")then
while((mw.ustring.match(adres,"/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*%.[%s_]*/"))or(mw.ustring.match(adres,"/[%s_]*/")))do
adres=mw.ustring.gsub(adres,"/[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"/+","/");
adres=mw.ustring.gsub(adres,"^/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/");
adres=mw.ustring.gsub(adres,"^[^/]*/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
adres=mw.ustring.gsub(adres,"/([^/]*)/[%.%s_]*[%s_]*%.[%s_]*%.[%s_]*/","/",1);
end;
adres=mw.ustring.gsub(adres,"[%s_]*/[%s_]*","/");
adres=mw.ustring.gsub(adres,"^[%s_]*/+","");
adres=mw.ustring.gsub(adres,"[%s_]*/+","/");
adres=mw.ustring.gsub(adres,"/+[%s_]*$","");
adres=mw.ustring.gsub(adres,"^[%s_]*","");
adres=mw.ustring.gsub(adres,"[%s_]*$","");
adres=mw.ustring.gsub(adres,"[%s_]+"," ");
end;
local wynik=(((dwukropek)and(dwukropek>0)) and ":" or "")..adres;
-----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-1])then tablica_danych_parametrow_szablonu_strony[-1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony=wynik;
end;
-----
return wynik;
end;
function p.PrzekierowanieDoStrony(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_modulu=PobierzParametr(1);
local html_modul=require("Module:Html");
local pudelko_modul=require("Module:Pudełko");
nazwa_modulu=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_modulu);
local czy_nazwa_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_modulu);
if(czy_nazwa_niepoprawna)then
mw.log("Niepoprawna nazwa modulu strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
local title=mw.title.makeTitle('',nazwa_modulu);
if(title)then
local strona=title.redirectTarget;
if(not strona)then return;end;
return html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](strona.fullText);
else
mw.log("Nieprawidłowy format nazwy modułu przy uzyskiwaniu, czy strona jest odnośnikiem do innej strony: "..(parametry_modul["CzyTakCiąg"](nazwa_modulu) and nazwa_modulu or "(nazwa pusta)")..".");
return;
end;
end;
function p.UsuwanieKomentarzowe(tekst,__FUNKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"(<!%-%-.-%-%->)",__FUNKCJA_USUWANIA or "");
return tekst;
end;
function p.UsuwanieZnakoweKontrolneNiewidzialne(tekst,__FUKCJA_USUWANIA)
local tekst=mw.ustring.gsub(tekst,"([^%C\n\t ])",__FUKCJA_USUWANIA or "");
return tekst;
end;
p["Forma wyrażenia po liczbie"] = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_table_frame=parametry_modul.TypeTable(frame);
local args=czy_table_frame and (frame.args or frame) or nil;
local argument_funkcji_modulu_1=czy_table_frame and (args[1] or "0") or (frame or "0");
local argument_funkcji_modulu_2=czy_table_frame and (args[2] or "zbiorów") or "zbiorów";
local argument_funkcji_modulu_3=czy_table_frame and (args[3] or "zbiór") or "zbiór";
local argument_funkcji_modulu_4=czy_table_frame and (args[4] or "zbiory") or "zbiory";
local bez_liczby=parametry_modul.CzyTak(args["bez liczby"]);
local specjalne_modul=require("Module:Specjalne");
local liczba_number=specjalne_modul["WydzielLiczbę"](argument_funkcji_modulu_1);
if(not liczba_number)then return "(błąd)";end;
local liczba_number=math.abs(liczba_number);
if(liczba_number==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;end;
if(liczba_number==1)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;end;
if(liczba_number<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
if(liczba_number<20)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
local reszta=math.fmod(liczba_number,20);
if(reszta==0)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." ")).." "..argument_funkcji_modulu_2;end;
if(reszta==1)then
if(liczba_number<20)then
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_3;
else
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2
end;
end;
if(reszta<5)then return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_4;end;
return (bez_liczby and "" or (argument_funkcji_modulu_1.." "))..argument_funkcji_modulu_2;
end;
return p;
e609kw4xobcq61rcnmhg3ewfjshevn1
Moduł:Html
828
56560
557734
553812
2026-09-27T05:48:33Z
Persino
2851
557734
Scribunto
text/plain
local p={};
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)
local szeregi_modul=require("Module:Szeregi");
wzor=wzor or "&([^&;%s]+);"
html=szeregi_modul.SzeregiOmijanieFunkcyjne(html,normalnie,wzor,funkcja,
function(kod)
return "&"..kod..";";
end);
return html;
end;
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
tekst=mw.ustring.gsub(tekst,"([%|%[%]%(%)%+%-%*%?%.%^%$%%'])",function (s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
return tekst;
end;
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
tekst=mw.ustring.gsub(tekst,"&#(%d+);",function (s) return tostring(mw.ustring.char(s));end);
tekst=mw.ustring.gsub(tekst,"&#x(%x+);", function(n) return mw.ustring.char(tonumber(n, 16));end);
return tekst;
end;
function p.ZnakiSpecjalneTaguNowiki(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([%!{}|=<>%[%]])",tab_nawiasy);
return tekst;
end;
function p.ZnakiSpecjalneWikiLinku(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([{}|<>%[%]])",tab_nawiasy);
return tekst;
end;
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local html=PobierzParametryRamki("html");
local __normalnie=PobierzParametryRamki("normalnie");
normalnie=parametry_modul.CzyTak(__normalnie) or normalnie;
---
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
local wzor_kody="([{}|<>%[%]#=%?&])";
html=p.KodowanieOmijanieFunkcyjne(html,normalnie,nil,function(ciag)
ciag=mw.ustring.gsub(ciag,wzor_kody,tab_nawiasy);
return ciag;
end);
return html;
end;
function p.EncodeZnakProloguList(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_nawiasy=html_dane_modul.tabela_nawiasowa;
local lista_znaki="%#%*%;%:";
tekst=mw.ustring.gsub(tekst,"^\n?(["..lista_znaki.."])",tab_nawiasy);
tekst=mw.ustring.gsub(tekst,"\n(["..lista_znaki.."])",function(znak)
return "\n"..(tab_nawiasy[znak] or znak);
end);
return tekst;
end;
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)
local parametry_modul=require("Module:Parametry");
local PobierzParametryRamki=parametry_modul.PobierzParametryRamki(frame);
local tekst=PobierzParametryRamki("tekst");
local __normalnie=PobierzParametryRamki("normalnie");
normalnie=parametry_modul.CzyTak(__normalnie) or normalnie;
---
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=p.KodowanieOmijanieFunkcyjne(tekst,normalnie,nil,function(ciag)
ciag=mw.ustring.gsub(ciag,"([=%?&])",tabela_nawiasowa);
return ciag;
end);
return tekst;
end;
function p.PrzypisanieZnakoweEncodeHtml(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([=])",tabela_nawiasowa);
return tekst;
end;
function p.ZamianaDwukropkaNaKodHtml(frame)
local parametry_modul=require("Module:Parametry");
local tekst=parametry_modul.PobierzParametryRamki(frame)("tekst");
local html_dane_modul=mw.loadData("Module:Html/dane");
local tabela_nawiasowa=html_dane_modul.tabela_nawiasowa;
tekst=mw.ustring.gsub(tekst,"([:])",tabela_nawiasowa);
return tekst;
end
function p.EncodeId(id,bez_transformacji)
id=(not bez_transformacji) and p.DecodeHtml(id,true) or id;
local id=p.EncodeSpecjalneZnakiHtml(id,true);
return id;
end;
function p.KodHTMLZnaku(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local znak=PobierzParametr(1);
if(not parametry_modul.CzyTak(znak))then return "(błąd)";end;
local czy_kod_znaku=PobierzParametr(2);
local czy_tak=parametry_modul["CzyTakCiąg"](czy_kod_znaku);
local ZnakFun=function(znak)
if(#znak>1)then
return mw.ustring.codepoint(znak);
else
return mw.ustring.byte(znak);
end;
end;
if(czy_tak)then
return "&#"..tostring(ZnakFun(znak))..";";
else
return "&#"..tostring(ZnakFun(znak))..";";
end;
end;
p["KodyHTMLZnakówWikiCiągu"] = function (frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local ciag_znakow=PobierzParametr(1);
if(not parametry_modul.CzyTak(ciag_znakow))then return "(błąd)";end;
local czy_kod_znaku=PobierzParametr(2);
local html_dane_modul=mw.loadData("Module:Html/dane");
local tab_znakowo_kodowa={};
local tabela_znakowa=html_dane_modul.tabela_znakowa;
local ciag,_=mw.ustring.gsub(ciag_znakow,"(.)",function(znak)
if(tabela_znakowa[znak])then
if(not czy_kod_znaku)then
return "&#"..tabela_znakowa[znak]..";";
else
return "&#"..tabela_znakowa[znak]..";";
end;
end;
return nil;
end);
return ciag;
end;
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)
parametr=mw.ustring.gsub(parametr,"","");
return parametr;
end;
function p.EncodeWiki(parametr,czy_nie_odstepy)
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
local parametry_modul=require("Module:Parametry");
if(not czy_nie_odstepy)then
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",[3]="tak",};
end;
parametr=mw.text.encode(parametr);
return parametr;
end;
function p.DecodeWiki(parametr,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
parametr=mw.text.decode(parametr);
parametr=p["TransformacjaKoduHtmlDoZnakuCiągu"](parametr);
parametr=p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr);
local parametr2;
if(not czy_nie_odstepy)then
local parametry_modul=require("Module:Parametry");
parametr2=parametr;
parametr=parametry_modul["Odstępy"]{[1]=parametr,[2]="tak",};
if(drugi_wynik)then
parametr2=czy_drugi_wynik_przetworzony and parametry_modul["Odstępy"]{[1]=parametr2,[2]="tak",[4]="tak",} or parametr2;
end;
end;
return parametr,parametr2;
end;
function p.IsEncodedHtml(parametr,encode,encode_real)
local parametry_modul=require("Module:Parametry");
local spr_parametr_szereg=nil;
local TempFunParametr=function(parametr)
if(parametry_modul.TypeNil(spr_parametr_szereg))then
local __spr_parametr_szereg=mw.ustring.match(parametr,"^[%w%p%s]*$");
spr_parametr_szereg=__spr_parametr_szereg and true or false;
return spr_parametr_szereg;
end;
return spr_parametr_szereg;
end;
local spr_parametr_bez_procentu=nil;
local TempFunBezProcentu=function(parametr)
if(parametry_modul.TypeNil(spr_parametr_bez_procentu))then
local __spr_parametr_bez_procentu=mw.ustring.match(parametr,"^[^%%]*$");
spr_parametr_bez_procentu=__spr_parametr_bez_procentu and true or false;
return spr_parametr_bez_procentu;
end;
return spr_parametr_bez_procentu;
end;
local wynik=((encode_real)and(TempFunParametr(parametr)and(TempFunBezProcentu(parametr))))
or((encode)and(TempFunBezProcentu(parametr)))
or(((not encode_real)or((encode_real)and(TempFunParametr(parametr))))
and(mw.ustring.match(parametr,"%%%x%x"))
and(not mw.ustring.match(parametr,"%%$"))
and(not mw.ustring.match(parametr,"%%.$"))
and(not mw.ustring.match(parametr,"%%[^%x]."))
and(not mw.ustring.match(parametr,"%%.[^%x]")));
return wynik and true or false;
end;
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)
if(not parametr)then return;end;
if(p.IsEncodedHtml(parametr,encode,encode_real))then
return p.EncodeWiki(parametr,czy_nie_odstepy);
end;
return mw.uri.encode(parametr,"WIKI");
end;
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not parametr)then return;end;
if(p.IsEncodedHtml(parametr,encode,encode_real))then
if(spacje)then
return p.DecodeWiki(mw.uri.decode(parametr,"WIKI"),czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony);
else
return p.EncodeWiki(mw.uri.decode(parametr,"WIKI"),czy_nie_odstepy);
end;
end;
if(spacje)then
return p.DecodeWiki(parametr,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony);
else
return p.EncodeWiki(parametr,czy_nie_odstepy);
end;
end;
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)
znacznik=mw.ustring.gsub(znacznik,"([\"'])(.-[^\\])(%1)",function(cudzyslow_otwierajacy,atrybut,cudzyslow_zamykajacy)
local ile1=0;local ile2;
atrybut=p.KodowanieOmijanieFunkcyjne(atrybut,true,nil,function(atrybut)
local __ile1;
atrybut,__ile1=mw.ustring.gsub(atrybut,"([<>&])",function(a)
return mw.text.encode(a);
end);
ile1=ile1+__ile1;
return atrybut;
end);
atrybut,ile2=mw.ustring.gsub(atrybut,"(\\\")",function(a)
return p["KodyHTMLZnakówWikiCiągu"](a);
end);
if(ile1+ile2>0)then
return cudzyslow_otwierajacy..atrybut..cudzyslow_zamykajacy;
end;
return nil;
end);
return znacznik;
end;
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)
value=mw.ustring.gsub(value,"(&)(%a+)(;)",function(amp,kod_html,srednik)
kod_html=mw.ustring.lower(kod_html);
if((kod_html=="lt")or(kod_html=="gt")or(kod_html=="amp"))then
return mw.text.decode(amp..kod_html..srednik);
end;
return nil;
end);
local lewy_ukosnik=mw.ustring.byte("\\");
local cudzyslow=mw.ustring.byte("\"");
value=mw.ustring.gsub(value,"(&#"..lewy_ukosnik..";&#"..cudzyslow..";)","\\\"");
return value;
end;
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_nie_dolne_myslniki=PobierzParametr("z nie dolnymi z myślnikami") or PobierzParametr(2) or czy_nie_dolne_myslniki;
czy_nie_dolne_myslniki=parametry_modul.CzyTak(czy_nie_dolne_myslniki);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
local naglowek=czy_nie_dolne_myslniki and mw.ustring.match(nazwa_jednostki,"^[^#]*#[%s_]*(.-)[%s_]*$") or mw.ustring.match(nazwa_jednostki,"^[^#]*#(.-)%s*$");
naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",[3]=((not czy_nie_dolne_myslniki)and "tak" or nil),};
return naglowek;
end;
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
if(czy_naprawiaj)then
local bez_naglowka=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^[%s_]*([^#]-)[%s_]*#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=bez_naglowka;end;
local parametry=mw.ustring.match(bez_naglowka,"^.-%?*%?[%s_]*([^&]+=[^&]-.-)[%s_]*$");
if(parametry)then
parametry=mw.ustring.gsub(parametry,"[%s_]*=[%s_]*","=") or nil;
parametry=mw.ustring.gsub(parametry,"[%s_]*&[%s_]*","&") or nil;
end;
return parametry;
else
local bez_naglowka=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=bez_naglowka;end;
local parametry=mw.ustring.match(bez_naglowka,"^.-%?*%?([^&]+=[^&]-.-)%s*$");
return parametry;
end;
end;
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(not nazwa_jednostki)then return;end;
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.nazwa_jednostki or p.DecodeHtml(nazwa_jednostki,true);
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.nazwa_jednostki))then tabela_nazw_adresu.nazwa_jednostki=nazwa_jednostki;end;
if(czy_naprawiaj)then
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^[%s_]*([^#]-)[%s_]*#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=nazwa_jednostki;end;
nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.-%?*)[%s_]*%?[^&]+=[^&]*.*$","%1");
else
nazwa_jednostki=tabela_nazw_adresu and tabela_nazw_adresu.bez_naglowka or mw.ustring.gsub(nazwa_jednostki,"^([^#]-)#(.*)$","%1");
if((tabela_nazw_adresu)and(not tabela_nazw_adresu.bez_naglowka))then tabela_nazw_adresu.bez_naglowka=nazwa_jednostki;end;
nazwa_jednostki=mw.ustring.gsub(nazwa_jednostki,"^(.-%?*)%?[^&]+=[^&]*.*$","%1");
end;
local strony_modul=require("Module:Strony");
local czy_url=strony_modul.SprawdzanieURL(nazwa_jednostki);
czy_url=czy_url and true or (not czy_naprawiaj);
nazwa_jednostki=parametry_modul["Odstępy"]{[1]=nazwa_jednostki,[2]="tak",[3]=czy_url and true or false,};
return nazwa_jednostki;
end;
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local parametry_strony=PobierzParametr("parametry") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
if(parametry_modul.CzyTak(parametry_strony))then
local nazwa_strony_linku;
if(czy_naprawiaj)then
if(mw.ustring.match(parametry_strony,"^[%s_]*title[%s_]*=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"^[%s_]*title[%s_]*=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"^[%s_]*title[%s_]*=([^&]+)&?","");
elseif(mw.ustring.match(parametry_strony,"&[%s_]*title[%s_]*=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"&[%s_]*title[%s_]*=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"&[%s_]*title[%s_]*=([^&]+).*$","");
end;
else
if(mw.ustring.match(parametry_strony,"^title=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"^title=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"^title=([^&]+)&?","");
elseif(mw.ustring.match(parametry_strony,"&title=[^&]*"))then
nazwa_strony_linku=mw.ustring.match(parametry_strony,"&title=([^&]+)&?.*$");
parametry_strony=mw.ustring.gsub(parametry_strony,"&title=([^&]+).*$","");
end;
end;
nazwa_strony_linku=parametry_modul["Odstępy"]{[1]=nazwa_strony_linku,[2]="tak",[3]=(not czy_naprawiaj),};
return nazwa_strony_linku,parametry_strony;
else
return nil;
end;
end;
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_jednostki=PobierzParametr("nazwa jednostki") or PobierzParametr("strona") or PobierzParametr(1);
czy_naprawiaj=PobierzParametr("czy naprawiać") or PobierzParametr(2) or czy_naprawiaj;
czy_naprawiaj=parametry_modul.CzyTak(czy_naprawiaj);
local tabela_nazw_adresu=tabela_nazw_adresu or {};
local adres=p["NazwaStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
local parametry_strony=p["ParametryStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
local naglowek_strony=p["NagłówekStronyAdresu"](nazwa_jednostki,(czy_naprawiaj)and true or nil,tabela_nazw_adresu);
nazwa_jednostki=adres..(parametry_strony and ("?"..parametry_strony) or "")..(naglowek_strony and ("#"..naglowek_strony) or "");
return nazwa_jednostki;
end;
function p.URLStrona(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
local z_ukosnikiem=parametry_modul.CzyTak(PobierzParametr("ukośnik") or PobierzParametr(2));
local serwer,nazwa=mw.ustring.match(url,"^//+([^%s/]+)"..((z_ukosnikiem) and "/+" or "").."(/?.-)$");
return serwer,nazwa;
end;
p["UrlBezProtokołu"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
local mail=mw.ustring.match(url,"^.*@([^@]+)$");
if(mail)then
return "//"..mail,"mail",1;
end;
local protokol,strona=mw.ustring.match(url,"^(%a+:)(/+.-)$");
if((protokol)and(strona))then
strona=mw.ustring.gsub(strona,"^(/+)","//");
return strona,protokol,2;
end;
local strona=mw.ustring.match(url,"^:?(/+.-)$");
if(strona)then
strona=mw.ustring.gsub(strona,"^(/+)","//");
return strona,nil,3;
end;
return "//"..url,nil,-1;
end;
function p.DecodeKoduHTMLZnaku(tekst)
local html_dane_modul=mw.loadData("Module:Html/dane");
local kody_literowe_html_i_ich_odpowiedniki_znakowe=html_dane_modul.kody_literowe_html_i_ich_odpowiedniki_znakowe;
-- najpierw nazwane encje
local ile1;
tekst,ile1 = mw.ustring.gsub(tekst,"(&%a+%;)", kody_literowe_html_i_ich_odpowiedniki_znakowe);
-- encje numeryczne dziesiętne: μ
local ile2;
tekst,ile2=mw.ustring.gsub(tekst,"&#(%d+);", function(n)
return mw.ustring.char(tonumber(n))
end);
-- encje numeryczne szesnastkowe: μ
local ile3;
tekst,ile3 = mw.ustring.gsub(tekst,"&#x(%x+);", function(n)
return mw.ustring.char(tonumber(n, 16))
end);
return tekst,ile1,ile2,ile3;
end;
function p.ZamianaEncodeTekst(tekst)
tekst=mw.uri.encode(mw.uri.decode(tekst,"PATH"),"PATH");
return tekst;
end;
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)
tekst=mw.ustring.gsub(tekst,wzor,function(tekst)
tekst=funkcja(tekst);
return tekst;
end);
return tekst;
end;
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)
elementy_adresu_strony=p.KodowanieOmijanieFunkcyjne(elementy_adresu_strony,true,"&(#35);",function(elementy_adresu_strony)
elementy_adresu_strony=p.DecodeKoduHTMLZnaku(elementy_adresu_strony);
return elementy_adresu_strony;
end);
elementy_adresu_strony=p.EncodeSpecjalneZnakiHtml(elementy_adresu_strony,true);
return elementy_adresu_strony;
end;
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)
if(czy_parametry_strony)then
elementy_adresu_strony=p.EncodeZaawansowanyParametryHtml(elementy_adresu_strony,z_kodowaniem);
else
elementy_adresu_strony=mw.uri.decode(elementy_adresu_strony,"PATH");
elementy_adresu_strony=p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony);
if(z_kodowaniem)then elementy_adresu_strony=mw.uri.encode(elementy_adresu_strony,"PATH");end;
end;
return elementy_adresu_strony;
end;
function p.EncodeHashKoduHtmlTekstu(tekst)
local ile;local ile2=0;
tekst,ile=mw.ustring.gsub(tekst,"&([^&;%s]+);",function(kod)
if((kod=="num")or(kod=="#35")or(kod=="#x23"))then
ile2=ile2+1;
return "&num;";
end;
return nil;
end);
return tekst,ile,ile2;
end;
function p.DecodeHashKoduHtmlTekstu(tekst,ile)
if(((ile)and(ile>0))or(not ile))then
tekst=mw.ustring.gsub(tekst,"&num;",function(kod)
return "#";
end);
end;
return tekst;
end;
function p.EncodeTempHashKoduHtmlTekstu(tekst)
local ile1;local ile2;
tekst,ile1=mw.ustring.gsub(tekst,"&#(%d+);",function(kod)
return "&#"..kod..";";
end);
tekst,ile2=mw.ustring.gsub(tekst,"&#x(%x+);",function(kod)
return "&#x"..kod..";";
end);
return tekst,ile1,ile2;
end;
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)
if(((ile1)and(ile1>0))or(not ile1))then
tekst=mw.ustring.gsub(tekst,"&#(%d+);",function(kod)
return "&#"..kod..";"
end);
end;
if(((ile2)and(ile2>0))or(not ile2))then
tekst=mw.ustring.gsub(tekst,"&#x(%x+);",function(kod)
return "&#x"..kod..";"
end);
end;
return tekst;
end;
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)
local ile_w;local ile;
adres,ile_w,ile=p.EncodeHashKoduHtmlTekstu(adres);
local ile1;local ile2;
if(ile_w>0)then
adres,ile1,ile2=p.EncodeTempHashKoduHtmlTekstu(adres);
end;
local strona,naglowek=mw.ustring.match(adres,"^[%s_]*([^#]-)[%s_]*#[%s_]*(.-)[%s_]*$");
if((not strona)or(not naglowek))then
strona=mw.ustring.match(adres,"^[%s_]*(.-)[%s_]*$");
end;
local __strona,parametry=mw.ustring.match(strona,"^(.-%?*)%?([^&=]-=.*)$");
strona=__strona or strona;
if(ile_w>0)then
strona=p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(strona,ile1,ile2),ile);
parametry=parametry and p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(parametry,ile1,ile2),ile) or nil;
naglowek=naglowek and p.DecodeHashKoduHtmlTekstu(p.DecodeTempHashKoduHtmlTekstu(naglowek,ile1,ile2),ile) or nil;
end;
return strona,parametry,naglowek;
end;
function p.TworzenieAdresuHtml(strona,parametry,naglowek)
local adres=strona..(parametry and ("?"..parametry) or "")..((naglowek)and ("#"..naglowek) or "");
return adres;
end;
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek,funkcja_operacji)
local SprawdzanieFuncTekst=function(tekst)
local spacja=" _\t";local interpunkcja="%,%.%:%?%!%(%)%;";local adres="%\\%/";local hash="%#";
local regex="^[%a%d"..spacja..interpunkcja..adres..hash.."]*$";
return mw.ustring.match(tekst,regex);
end;
local czy_adres=SprawdzanieFuncTekst(adres);
if(czy_adres)then return adres;end;
local strona,parametry,naglowek=p.StronaParametryIdentyfikacjaAdresuHtml(adres);
strona=funkcja_strona and funkcja_strona(strona,funkcja_operacji and funkcja_operacji[1] or nil) or strona;
parametry=(parametry and funkcja_parametry) and funkcja_parametry(parametry,funkcja_operacji and funkcja_operacji[2] or nil) or parametry;
naglowek=(naglowek and funkcja_naglowek) and funkcja_naglowek(naglowek,funkcja_operacji and funkcja_operacji[3] or nil) or naglowek;
local adres=p.TworzenieAdresuHtml(strona,parametry,naglowek);
return adres;
end;
function p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)
local function EncodeParametryURL(a,b,c,funkcja_operacji)
return a..funkcja_operacji(b).."="..funkcja_operacji(c);
end;
local function OperacjeHtml(adres,funkcja_operacji)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeParametryURL(a,b,c,funkcja_operacji);end);
return adres;
end;
local funkcja_operacji={
[1]=function(tekst)
return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",p.ZamianaEncodeTekst);
end,
[2]=function(tekst)
return p.ZamianaEncodeTekst(tekst);
end,
[3]=function(tekst)
return p.ZamianaEncodeTekst(tekst);
end,
};
if(not w_adresie)then
return OperacjeHtml(adres,funkcja_operacji[2]);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeHtml,funkcja_naglowek,funkcja_operacji);
end;
end;
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)
local KrokEncodeZaawansowanyParametryURLABC=function(a)
a=mw.uri.decode(a,"PATH");
a=p.EncodeSpecjalneZnakiHtml(a,true);
if(z_kodowaniem)then a=mw.uri.encode(a,"PATH");end;
return a;
end;
local function EncodeZaawansowanyParametryURL(a,b,c,funkcja_operacji)
b=mw.uri.decode(b,"PATH");b=funkcja_operacji(b,true);b=mw.uri.encode(b,"PATH");
c=mw.uri.decode(c,"PATH");c=funkcja_operacji(c,true);c=mw.uri.encode(c,"PATH");
return a..(b.."="..c);
end;
local function OperacjeURL(adres,funkcja_operacji)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeZaawansowanyParametryURL(a,b,c,funkcja_operacji);end);
adres=mw.ustring.gsub(adres,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeZaawansowanyParametryURL(a,b,c,funkcja_operacji);end);
return adres;
end;
local funkcja_operacji={
[1]=function(tekst)
return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",KrokEncodeZaawansowanyParametryURLABC);
end,
[2]=function(tekst)
return KrokEncodeZaawansowanyParametryURLABC(tekst);
end,
[3]=function(tekst)
return KrokEncodeZaawansowanyParametryURLABC(tekst);
end,
};
if(not w_adresie)then
return OperacjeURL(adres,funkcja_operacji[2]);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeURL,funkcja_naglowek,funkcja_operacji);
end;
end;
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)
local EncodeHtmlAB=function(a,b,c,funkcja_operacji)
b=funkcja_operacji(b);c=funkcja_operacji(c);
return a..b.."="..c;
end;
local function ParametryHtml(parametr,funkcja_operacji)
parametr=mw.ustring.gsub(parametr,"^(%??)([^&=]*)=([^&]*)",function(a,b,c)return EncodeHtmlAB(a,b,c,funkcja_operacji);end);
parametr=mw.ustring.gsub(parametr,"(&)([^&=]*)=([^&]*)",function(a,b,c)return EncodeHtmlAB(a,b,c,funkcja_operacji);end);
return parametr;
end;
local funkcja_operacji={
[1]=function(tekst)
return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",p.EncodeHtml);
end,
[2]=function(tekst)
return p.EncodeHtml(tekst);
end,
[3]=function(tekst)
return p.EncodeHtml(tekst);
end,
};
if(not w_adresie)then
return ParametryHtml(parametr,funkcja_operacji[2]);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(parametr,funkcja_strona,ParametryHtml,funkcja_naglowek,funkcja_operacji);
end;
end;
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)
local KrokEncodeZaawansowanyParametryHtmlABC=function(a)
a=mw.uri.decode(a,"PATH");
a=p.EncodePodstawoweHtmlTekstu(a);
if(z_kodowaniem)then a=mw.uri.encode(a,"PATH");end;
return a;
end;
local EncodeZaawansowanyParametryHtmlABC=function(a,b,c,funkcja_operacji)
b=funkcja_operacji(b);
c=funkcja_operacji(c);
return (a or "")..(b.."="..c);
end;
local function OperacjeParametryHtmlABC(adres,funkcja_operacji)
adres=mw.ustring.gsub(adres,"^(%??)([^&=]-)=([^&]*)",function(a,b,c)return EncodeZaawansowanyParametryHtmlABC(a,b,c,funkcja_operacji);end);
adres=mw.ustring.gsub(adres,"([&])([^&=]-)=([^&]*)",function(a,b,c)return EncodeZaawansowanyParametryHtmlABC(a,b,c,funkcja_operacji);end);
return adres;
end;
local funkcja_operacji={
[1]=function(tekst)
return p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,"[^/]+",KrokEncodeZaawansowanyParametryHtmlABC);
end,
[2]=function(tekst)
return KrokEncodeZaawansowanyParametryHtmlABC(tekst);
end,
[3]=function(tekst)
return KrokEncodeZaawansowanyParametryHtmlABC(tekst);
end,
};
if(not w_adresie)then
return OperacjeParametryHtmlABC(adres,funkcja_operacji[2]);
else
return p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,OperacjeParametryHtmlABC,funkcja_naglowek,funkcja_operacji);
end;
end;
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)
local adres=p.EncodeParametryURL(adres,true,
function(strona,Func)
if(protokolarny)then
local adres,protokol=p["UrlBezProtokołu"](strona);
adres=Func(adres);
adres=(protokol or "")..adres;
return adres;
else
return Func(strona);
end;
end,
function(naglowek,Func)
naglowek=Func(naglowek);
return naglowek;
end);
return adres;
end;
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)
local parametry_modul=require("Module:Parametry")
local PobierzParametry=parametry_modul.PobierzParametryRamki(frame);
local html=PobierzParametry("html");
local z_kodowaniem_html=PobierzParametry("encode");
if(z_kodowaniem_html)then z_kodowaniem=parametry_modul.CzyTak(z_kodowaniem_html);end;
local html=p.EncodeZaawansowanyParametryHtml(html,z_kodowaniem,true,
function(strona,Func)
if(protokolarny)then
local adres,protokol=p["UrlBezProtokołu"](strona);
adres=Func(adres);
adres=(protokol or "")..adres;
return adres;
else
return Func(strona);
end;
end,
function(naglowek,Func)
naglowek=Func(naglowek);
return naglowek;
end);
return html;
end;
function p.UriEncode(frame)
local parametry_modul=require("Module:Parametry");
local html=parametry_modul.PobierzParametryRamki(frame)("html");
html=mw.ustring.gsub(html,"^(%a+://)(.+)$",function(prot,strona)
return prot..p.AdresDomniemanieBezProtokolarnyEncodeURL(strona,false);
end);
return html;
end;
return p;
scsdl9v8jnzb4j7siyv6ezmgj99bhdl
Moduł:StronicowyParser/Potrzebne
828
58155
557760
557662
2026-09-27T10:56:37Z
Persino
2851
557760
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_modyfikowanie)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
6dmffnws7y5ftc7a647kyyvgmksm6zh
557761
557760
2026-09-27T11:04:06Z
Persino
2851
557761
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
local szablonowe_modul=require("Module:Szablonowe");
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_modyfikowanie)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
78jxuaijrfy4w12drbubeec2olvzv84
557762
557761
2026-09-27T11:07:39Z
Persino
2851
557762
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
local szablonowe_modul=require("Module:Szablonowe");
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif((obiekt=="ZMIENNA")and(czy_z_kluczem))then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
e8r3l34wx1w2swl2ew9c3a6hmiseinx
557763
557762
2026-09-27T11:09:39Z
Persino
2851
557763
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
local szablonowe_modul=require("Module:Szablonowe");
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_bez_klucza)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif((obiekt=="ZMIENNA")and(not czy_bez_klucza))then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
26pmywbh8v3hpoam4f3n0d641sgppf7
557764
557763
2026-09-27T11:13:28Z
Persino
2851
557764
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
local szablonowe_modul=require("Module:Szablonowe");
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif((obiekt=="ZMIENNA")and(czy_z_kluczem))then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
e8r3l34wx1w2swl2ew9c3a6hmiseinx
557766
557764
2026-09-27T11:18:10Z
Persino
2851
Anulowano wersję [[Special:Diff/557764|557764]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
557766
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
local szablonowe_modul=require("Module:Szablonowe");
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_bez_klucza)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif((obiekt=="ZMIENNA")and(not czy_bez_klucza))then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
26pmywbh8v3hpoam4f3n0d641sgppf7
557768
557766
2026-09-27T11:18:57Z
Persino
2851
Anulowano wersję [[Special:Diff/557766|557766]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
557768
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
local szablonowe_modul=require("Module:Szablonowe");
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif((obiekt=="ZMIENNA")and(czy_z_kluczem))then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
e8r3l34wx1w2swl2ew9c3a6hmiseinx
557770
557768
2026-09-27T11:46:09Z
Persino
2851
557770
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,tekst=true,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
--twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;';
local styl_spisu=(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;';
local klasa_spisu='toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "");
local spis=czy_ukryte or "<ul></ul>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_szablonowa,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
end;
function p.ARCHIWLubSTARE(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul)
local obiekt=obiekt or "ARCHIW";
local szablonowe_modul=require("Module:Szablonowe");
kod=kod or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
kod=kod+1;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod),kod;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,nazwa_modulu_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory,czy_z_kluczem)
----
--nazwa_modulu_szablonowa=nazwa_modulu_szablonowa or nazwa_modulu;
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local max;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
return true,true;
end,
nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kodtabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
if(not wynik)then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
elseif((obiekt=="STARE")or(obiekt=="ARCHIW"))then
return nil,true;
elseif((obiekt=="ZMIENNA")and(not czy_z_kluczem))then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local kodowanie_szablonowe;
kodowanie_szablonowe,max=p.ARCHIWLubSTARE(szablon,"ARCHIW",max,tablica_analizy_obiektow_strony_dany_modul)
return kodowanie_szablonowe;
end;
end;
end;
return szablon;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA)
----
local DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
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"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
----
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true,strona_wolumin);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false,(((strona)and(not nazwa)) and true or nil);
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki,nil,strona_wolumin);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow),(((strona)and(not nazwa)) and true or nil);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
4alum8bwmkkk0polrkt6dnfd3j6r7b6
Moduł:StronicowyParser/Rozdziały
828
58234
557750
557659
2026-09-27T09:16:00Z
Persino
2851
557750
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy)
poziom=tonumber(poziom) or 0;
if((poziom>=1)and(poziom<=6))then
tekst=mw.ustring.gsub(tekst,"\n"," ");
return "\n"..lewy..tekst..prawy.."\n";
end;
end);
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
["#x20"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not nie_trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return " ";
else
local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu];
if(nazwa_zmiennej)then
local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej];
return zawartosc or " ";
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa=="br")or(nazwa=="hr"))then
return " ",nil,true;
else
return zawartosc or "",nil,true;
end;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_inne_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
h35onj2fkjcxs1hslkrpbdb6yu4nl5f
557751
557750
2026-09-27T09:24:54Z
Persino
2851
557751
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy)
poziom=tonumber(poziom) or 0;
if((poziom>=1)and(poziom<=6))then
tekst=mw.ustring.gsub(tekst,"\n"," ");
return "\n"..lewy..tekst..prawy.."\n";
end;
end);
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
["#x20"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not nie_trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return " ";
else
local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu];
if(nazwa_zmiennej)then
local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej];
return zawartosc or " ";
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa=="br")or(nazwa=="hr"))then
return " ",nil,true;
else
return zawartosc or "",nil,true;
end;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_inne_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
9622iu97cip0tk839r55u3npta52le6
557752
557751
2026-09-27T09:34:02Z
Persino
2851
557752
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy)
poziom=tonumber(poziom) or 0;
if((poziom>=1)and(poziom<=6))then
tekst=mw.ustring.gsub(tekst,"\n"," ");
return "\n"..lewy..tekst..prawy.."\n";
end;
end);
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
["#x20"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not nie_trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return " ";
else
local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu];
if(nazwa_zmiennej)then
local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej];
return zawartosc or " ";
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa=="br")or(nazwa=="hr"))then
return " ",nil,true;
else
return zawartosc or "",nil,true;
end;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_inne_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
tl9t5zbov5s6op4ynsmbad7xdtoaoxw
557756
557752
2026-09-27T09:43:28Z
Persino
2851
557756
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy)
poziom=tonumber(poziom) or 0;
if((poziom>=1)and(poziom<=6))then
tekst=mw.ustring.gsub(tekst,"\n"," ");
return "\n"..lewy..tekst..prawy.."\n";
end;
end);
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
["#x20"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not nie_trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return " ";
else
local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu];
if(nazwa_zmiennej)then
local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej];
return zawartosc or " ";
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa=="br")or(nazwa=="hr"))then
return " ",nil,true;
else
return zawartosc or "",nil,true;
end;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_inne_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
54dxuga63oehah3p7iqc9mvp18pvuci
557757
557756
2026-09-27T09:54:10Z
Persino
2851
557757
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy)
poziom=tonumber(poziom) or 0;
if((poziom>=1)and(poziom<=6))then
tekst=mw.ustring.gsub(tekst,"\n"," ");
return "\n"..lewy..tekst..prawy.."\n";
end;
end);
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
["#x20"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not nie_trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return " ";
else
local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu];
if(nazwa_zmiennej)then
local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej];
return zawartosc or " ";
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa=="br")or(nazwa=="hr"))then
return " ",nil,true;
else
return zawartosc or "",nil,true;
end;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_inne_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
t2thdm01husyswhizavkeg8jp0dkomg
557758
557757
2026-09-27T10:03:55Z
Persino
2851
557758
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy)
poziom=tonumber(poziom) or 0;
if((poziom>=1)and(poziom<=6))then
tekst=mw.ustring.gsub(tekst,"\n"," ");
return "\n"..lewy..tekst..prawy.."\n";
end;
end);
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
["#x20"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not nie_trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return " ";
else
local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu];
if(nazwa_zmiennej)then
local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej];
return zawartosc or " ";
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa=="br")or(nazwa=="hr"))then
return " ",nil,true;
else
return zawartosc or "",nil,true;
end;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_inne_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
9il2nvh8nup6770z0ky1lhz2guqyy1v
557759
557758
2026-09-27T10:15:15Z
Persino
2851
557759
Scribunto
text/plain
local p={};
function p.NapisWprowadzeniaTekstu(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n"..str_poziom..rozdzial..str_poziom.."\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.NapisWprowadzeniaTekstuHn(rozdzial,poziom,id)
local naglowek;
poziom=poziom or 1;
poziom=(poziom>0)and poziom or 1;
if(poziom<=6)then
local str_poziom=mw.ustring.rep("=",poziom);
naglowek="\n<h"..poziom.." "..(id and ("id=\""..id.."\"") or "")..">"..rozdzial.."</h"..poziom..">\n";
else
naglowek="\n<h6 "..(id and ("id=\""..id.."\"") or "").." class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..rozdzial.."</h6>\n";
end;
return naglowek;
end;
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)
if(mw.ustring.match(zawartosc,"\n"))then return false;end;
local szablonowe_modul=require("Module:Szablonowe");
local kod_norma_wzoru_obiektu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod);
tekst='\n'..tekst..'\n';
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
return false;
end;
function p.NapisWprowadzeniaTekstuHNumer(parametr)
local naglowek,poziom=p.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(not naglowek)then return nil;end;
if(poziom<=6)then
return "<h"..poziom..">"..naglowek.."</h"..poziom..">";
else
return "<h6 class=\"mw-hnumber mw-hnumber-"..poziom.."\">"..naglowek.."</h6>";
end;
end;
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)
if(mw.ustring.match(linia,"^%s*=*%s*$"))then
return nil,0;
end;
local rowna_lewy=mw.ustring.match(linia,"^(=+)");
local rowna_prawy=mw.ustring.match(linia,"(=+)%s*$");
if((rowna_lewy)and(rowna_prawy))then
local min_rowna=math.min(#rowna_lewy,#rowna_prawy);
local str_min_rowna=mw.ustring.rep("=",min_rowna);
local naglowek=mw.ustring.match(linia,"^%s*"..str_min_rowna.."([^\n]*[^\n%=][^\n]*)"..str_min_rowna.."%s*$");
if(not naglowek)then
return nil,0;
end;
local naglowek=mw.text.trim(naglowek);
return naglowek,min_rowna;
else
return nil,0;
end;
end;
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)
local liczba1,zawartosc,liczba2=mw.ustring.match(linia,"<[Hh](%d+)[^<>]*>(.-)</[Hh](%d+)>");
if(not liczba1)then return nil;end;
if((#liczba1==1)and(#liczba2==1)and(liczba1==liczba2))then
local liczba1=tonumber(liczba1);
if(not liczba1)then return nil;end;
if((liczba1<1)or(liczba1>6))then return nil;end;
return zawartosc,liczba1;
end;
return nil;
end;
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*\n")
or mw.ustring.match(zawartosc,"\n=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$")
or mw.ustring.match(zawartosc,"^=+[^\n]*[^=\n]+[^\n]*=+[^%S\n]*$");
end;
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)
return mw.ustring.match(zawartosc,"^[;%*:#]+")
or mw.ustring.match(zawartosc,"\n[;%*:#]+");
end;
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)
local czy_naglowek=p.CzyJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then return true,true;end;
--czy_naglowek=mw.ustring.match(wiersz,"<[Hh]%d+[^<>]*>(.+)</[Hh]%d+>");
local czy_naglowek=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz) and true or false;
return czy_naglowek,false;
end;
function p.WierszHNumer(tekst)
local tekst=mw.ustring.gsub(tekst,"(<[Hh](%d+)[^<>]*>)(.-)(</[Hh]%2%s*>)",function(lewy,poziom,tekst,prawy)
poziom=tonumber(poziom) or 0;
if((poziom>=1)and(poziom<=6))then
tekst=mw.ustring.gsub(tekst,"\n"," ");
return "\n"..lewy..tekst..prawy.."\n";
end;
end);
return tekst;
end;
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
-----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
return true;
end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
return true;
--elseif((obiekt=="MATH")or(obiekt=="ŹRÓDŁO"))then
--return true;
end;
end;
return false;
end;
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
local szablonowe_modul=require("Module:Szablonowe");
-----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
if((obiekt=="INNEPRE")or(obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="MATH")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU"))then
return true;
end;
end;
return false;
end;
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)
local czy=mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s+") or mw.ustring.match(rozdzial_z_numeracja,"^[%d%.]+%s*$");
if(czy)then
local num=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)");
local tab=mw.text.split(num,"%.",false);
if(#tab==1)then
if(mw.ustring.match(num,"^%d+$"))then
return rozdzial_z_numeracja,"";
end;
else
if(tab[#tab]=="")then tab[#tab]=nil;end;
end;
local tak=true;
for i=1,#tab,1 do
tak=tak and mw.ustring.match(tab[i],"^%d+$");
if(not tak)then break;end;
end;
if(tak)then
local numeracja=mw.ustring.match(rozdzial_z_numeracja,"^([%d%.]+)%s*");
local rozdzial_bez_numeracji=mw.ustring.gsub(rozdzial_z_numeracja,"^[%d%.]+%s*","");
return rozdzial_bez_numeracji,numeracja;
end;
end;
return rozdzial_z_numeracja,"";
end;
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_kom=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
return tab_kom[nazwa_szablonu];
end;
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()
return true;
end;
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local rozdzial=mw.ustring.match(linia,"^('+..-:[%s_]-'*)[%s_]*$") or ((not mw.ustring.match(linia,"^%s+"))and(mw.ustring.match(linia,"^(..-:[%s_]-'*)[%s_]*$")));
if(rozdzial)then
return rozdzial,true;
else
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local spis_tresci=stronicowyparser_analizaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
if(spis_tresci)then
return linia,true;
else
local rozdzial,main=nil,nil;
if(not mw.ustring.match(linia,"^'+.-[^'%s].-'+.-[^'%s]%s*$"))then
rozdzial,main=mw.ustring.match(linia,"^('+[%s_]*(..-)[%s_]*'*)[%s_]*$");
end;
if(rozdzial)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local rozdzial_main=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(rozdzial_main,"^.*![%s_]*'*[%s_]*$"))then
if(mw.ustring.match(rozdzial_main,"^[^']-$"))then
if((not mw.ustring.match(rozdzial_main,"^%u[%s_]"))and(not mw.ustring.match(rozdzial_main,"[%s_]%u$")))then
return rozdzial,true;
end;
end;
end;
else
local czy_nie_rozdzial_zerowy=mw.ustring.match(linia,"%.%s*$");
if(czy_nie_rozdzial_zerowy)then return linia,false;end;
end;
return nil;
end;
end;
end;
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
if((not przedrotek_listy)or(#przedrotek_listy==0))then return false;end;
local czy_dwukropki=mw.ustring.match(przedrotek_listy,"^:+$");
if(not czy_dwukropki)then return false;end;
local czy_miedzy_cudzyslowami=mw.ustring.match(linia,"^%s*''+.+'*%s*$");
if(not czy_miedzy_cudzyslowami)then return false;end;
if(not z_parametrami_linkowymi)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local czy_sa_kody=mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_sa_kody)then return true;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW"))then
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
if((tab_pozycja_elementow_w_spisie_rzeczy)and(numer_rodzaju_artykulu==1))then
return false;
end;
end;
end;
return true;
end;
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local numer_rozdzialu=znaczniki_wprowadzenia_tekstu[nazwa];
if((atrybuty)and(numer_rozdzialu>=6))then
local klasa=atrybuty["class"];
if(klasa)then
local mw_hnumber_liczba=mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s*$")
or mw.ustring.match(klasa,"^%s*mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s+")
or mw.ustring.match(klasa,"%s+mw%-hnumber%-(%d+)%s*$");
mw_hnumber_liczba=tonumber(mw_hnumber_liczba) or 6;
mw_hnumber_liczba=(mw_hnumber_liczba>6) and mw_hnumber_liczba or 6;
numer_rozdzialu=mw_hnumber_liczba or numer_rozdzialu;
end;
end;
return numer_rozdzialu;
end;
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)
local numeracja,rozdzial=mw.ustring.match(zawartosc,"^%s*([%d%.]*)%s*(.-)%s*$");
return numeracja,rozdzial;
end;
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local zacznij;local wprowadzenie;local zawsze=false;local ostatnie=false;local bez_kropki=nil;local spac=nil;local nie_rozdzial=nil;local nie_numerowany=nil;
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local stronicowyparser_analizaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local techniczne_modul=require("Module:Techniczne");
local specjalne_modul=require("Module:Specjalne");
local strony_modul=require("Module:Strony");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local maksymalny_rozmiar_rozdzialu_zerowego=70;
return function(linia,tak_ce_spis_tresci)
----
local rozdzial=nil;local numeracja=nil;
local poczatek,rozdzial_z_numeracja=mw.ustring.match(linia,"^([#:%*;]+)%s*('*%s*[%d%.]*%s*.-%s*'*)%s*$");
local rozdzial_z_numeracja_nie_przetworzone=nil;
-----
----
if(not poczatek and not rozdzial_z_numeracja)then
rozdzial_z_numeracja=mw.ustring.match(linia,"^([%d%.]+%s*.-)%s*$") or mw.ustring.match(linia,"^'+(%s*[%d%.]+%s*.-)%s*'*%s*$")
if(rozdzial_z_numeracja)then
poczatek="";
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
else
local function LiniaCydzyslow(linia)
local linia_wew_cudz=mw.ustring.match(linia,"^'+%s*(.-[^']+.-)%s*'+%s*$")
if(not linia_wew_cudz)then return false;end;
return not (mw.ustring.match(linia_wew_cudz,'^%u[%u%s]*$')
and((mw.ustring.match(linia_wew_cudz,"%s%u%s"))or(mw.ustring.match(linia_wew_cudz,"^%u%s"))or(mw.ustring.match(linia_wew_cudz,"%s%u$"))))
end;
if(LiniaCydzyslow(linia))then
rozdzial=linia;
poczatek="";
numeracja="";
else
local url_iter=mw.ustring.gmatch(linia,"(%S+)");
local czy_rozdzial=false;
for url in url_iter do
czy_rozdzial=czy_rozdzial or strony_modul.SprawdzanieURL(url);
if(czy_rozdzial)then
break;
end;
end;
if(czy_rozdzial)then
poczatek="";
numeracja="";
rozdzial=linia;
end;
end;
end;
else
rozdzial_z_numeracja_nie_przetworzone=rozdzial_z_numeracja;
rozdzial_z_numeracja=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_z_numeracja);
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"^(%s+)","");
rozdzial_z_numeracja=mw.ustring.gsub(rozdzial_z_numeracja,"(%s+)$","");
rozdzial,numeracja=p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
end;
local ze_specialnymi_obiektami=((rozdzial) and true or false);local czy_centrowanie=false;local czy_znaczniki_hn=false;local tekst;
local nazwa,zawartosc,atrybuty;
if(rozdzial)then tekst=rozdzial;else tekst=linia;end;
----
local function WykluczenieNieodpowiednichNormSzablonowych(rozdzial)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="GALERIA")or(obiekt=="ŹRÓDŁO")or(obiekt=="PRE")or(obiekt=="INNEPRE")or(obiekt=="WIKITABELA")or(obiekt=="MAPAOBRAZU"))then
return nil;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(stronicowyparser_obiekty_modul.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return nil;end;
end;
end;
return true;
end;
local FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu=function(wartosc)
if(mw.ustring.match(wartosc,"^%s*%d+%s*/%s*%d+%s*$"))then return nil;end;
if(mw.ustring.match(wartosc,"!%s*'*%s*$"))then return nil;end;
numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(wartosc);
if(rozdzial)then
local wynik=WykluczenieNieodpowiednichNormSzablonowych(rozdzial);
if(not wynik)then
numeracja=nil;rozdzial=nil;
return nil;
end;
end;
end;
local function NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local wartosc=tabela_parametrow_szablonu[czy_ce];
if(wartosc)then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(wartosc);
end;
return nil;
end;
end;
local function NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty)
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu(zawartosc);
end;
end;
return nil;
end;
----
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
---
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweSzablonoweWprowdzeniaTekstu(szablon,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
elseif((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod)))then
ze_specialnymi_obiektami=true;
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return true;
end;
end);
if(wynik)then return;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif((obiekt=="PRE")or(obiekt=="MATH")or(obiekt=="ŹRÓDŁO")or(obiekt=="INNEPRE"))then
if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
ze_specialnymi_obiektami=true;
return nil;
elseif(obiekt=="ZNACZNIK")then
nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
ze_specialnymi_obiektami=true;
czy_centrowanie=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
--if(rozdzial)then poczatek=nil;rozdzial=nil;numeracja=nil;end;
return nil;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
ze_specialnymi_obiektami=true;
czy_znaczniki_hn=true;
NiestardardoweZnacznikoweWprowdzeniaTekstu(szablon,nazwa,zawartosc,atrybuty);
return nil;
end;
end;
end;
return szablon;
end);
for szablon,obiekt,kod in iter do end;
rozdzial=rozdzial and parametry_modul["Odstępy"](rozdzial) or nil;
poczatek=poczatek and parametry_modul["Odstępy"](poczatek) or nil;
numeracja=numeracja and parametry_modul["Odstępy"](numeracja) or nil;
if(not ze_specialnymi_obiektami)then
local rozdzial,czy_standardowe_rozdzialy=p.CzyZerowyNapisWprowadzeniaTekstu(rozdzial or linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
if(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
elseif(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$"))then
return linia,rozdzial,0,nil,numeracja;
else
return nil;
end;
end;
else
return nil;
end;
elseif(czy_centrowanie)then
if(tak_ce_spis_tresci)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
return linia,rozdzial,2,nil,numeracja,true;
end;
end;
return nil;
elseif(czy_znaczniki_hn)then
if((rozdzial)and(numeracja))then
if((not parametry_modul.CzyTak(numeracja))and(not parametry_modul.CzyTak(rozdzial)))then
return nil,nil,nil,nil;
end;
local numer_rozdzialu=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
end;
elseif(rozdzial)then
local czy_numeracja_niepusta=parametry_modul.CzyTak(numeracja);
local czy_rozdzial_niepusty=parametry_modul.CzyTak(rozdzial);
if((not czy_numeracja_niepusta)and(not czy_rozdzial_niepusty))then
return nil;
end;
if(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego)then
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
else
local czy_poczatek_niepusty=parametry_modul.CzyTak(poczatek);
if(((not czy_poczatek_niepusty)or(#poczatek==0))and((not czy_numeracja_niepusta)or(#numeracja==0)))then
return nil;
else
local czy_pominac_ten_rozdzial_jako_rozdzial=rozdzial_z_numeracja_nie_przetworzone and p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(poczatek,rozdzial_z_numeracja_nie_przetworzone,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) or nil;
if(not czy_pominac_ten_rozdzial_jako_rozdzial)then
if((#poczatek>0)or(not mw.ustring.match(rozdzial,"^.+[%.%;!,%?]%s*'+%s*$")))then
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
else
return nil;
end;
else
return nil;
end;
end;
end;
else
return nil;
end;
return nil;
end;
end;
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu1=frame.args[2] or "";
local id_rozdzialu2=frame.args[3] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
return p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
end;
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)
tekst=mw.ustring.gsub(tekst,"^[%s_]+","");
tekst=mw.ustring.gsub(tekst,"[%s_]+$","");
tekst=mw.ustring.gsub(tekst,"[%s_]+","_");
return tekst;
end;
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local specjalne_modul=require("Module:Specjalne");
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
local nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return nazwa_rozdzialu_aktualna;
end;
end;
end;
return nil;
end;
function p.NumerSekcjiStrony(frame)
local strona=frame.args[1];
local id_rozdzialu=frame.args[2] or "";
strona=frame:preprocess(strona);
local title=mw.title.makeTitle('',strona);
if((not title)or(not title.exists))then
return nil;
end;
local tekst=title:getContent();
if(not tekst)then return nil;end;
id_rozdzialu=frame:preprocess(id_rozdzialu);
local specjalne_modul=require("Module:Specjalne");
id_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu);
id_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu);
local html_modul=require("Module:Html");
id_rozdzialu=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local ile=1;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(id_rozdzialu==nazwa_rozdzialu)then
return ile;
end;
ile=ile+1;
end
end;
return nil;
end;
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)
local frame=mw.getCurrentFrame();
local specjalne_modul=require("Module:Specjalne");
local html_modul=require("Module:Html");
id_rozdzialu1=frame:preprocess(id_rozdzialu1);
id_rozdzialu1=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu1);
id_rozdzialu1=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu1);
id_rozdzialu1=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu1);
id_rozdzialu2=frame:preprocess(id_rozdzialu2);
id_rozdzialu2=specjalne_modul["WydzielZwykłyTekst"](id_rozdzialu2);
id_rozdzialu2=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(id_rozdzialu2);
id_rozdzialu2=html_modul.DecodeKoduHTMLZnaku(id_rozdzialu2);
tekst=mw.ustring.gsub(tekst,"<[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>(.-)</[Nn][Oo][Ii][Nn][Cc][Ll][Uu][Dd][Ee]>","");
tekst=mw.ustring.gsub(tekst,"<[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>(.-)</[Ii][Nn][Cc][Ll][Uu][Dd][Ee][Oo][Nn][Ll][Yy]>","%1");
--tekst=mw.ustring.gsub(tekst,"\n\n","\n\n");
tekst=p.WierszHNumer(tekst);
local szeregi_modul=require("Module:Szeregi");
local iter=szeregi_modul.IteratorLiniiTekstu(tekst);
local tab_rozdzialy={};
local str=""
local nazwa_rozdzialu_aktualna;
local poziom_rozdzialu_aktualny;
for wiersz in iter do
local czy_naglowek,czy_naglowek_wiki=p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz);
if(czy_naglowek)then
local nazwa_rozdzialu,poziom_rozdzialu;
if(czy_naglowek_wiki)then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(wiersz);
else
nazwa_rozdzialu,poziom_rozdzialu=p.PodajTekstHNumerNapisuWprowadzeniaTekstu(wiersz);
end;
nazwa_rozdzialu=frame:preprocess(nazwa_rozdzialu);
nazwa_rozdzialu=specjalne_modul["WydzielZwykłyTekst"](nazwa_rozdzialu);
nazwa_rozdzialu=p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(nazwa_rozdzialu);
nazwa_rozdzialu=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu);
local c=1;
for i=1,#tab_rozdzialy,1 do
if(tab_rozdzialy[i]==nazwa_rozdzialu)then
c=c+1;
end;
end;
if(c>1)then
nazwa_rozdzialu=nazwa_rozdzialu.."_"..c;
end;
table.insert(tab_rozdzialy,nazwa_rozdzialu);
if(((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))
and((((id_rozdzialu2=="")or(not id_rozdzialu2))and(poziom_rozdzialu<=poziom_rozdzialu_aktualny))or(nazwa_rozdzialu==id_rozdzialu2)))then
return str;
end;
if((id_rozdzialu1~="")and(nazwa_rozdzialu==id_rozdzialu1))then
nazwa_rozdzialu_aktualna=nazwa_rozdzialu;
poziom_rozdzialu_aktualny=poziom_rozdzialu;
str="";
elseif(id_rozdzialu1=="")then
nazwa_rozdzialu_aktualna="";
poziom_rozdzialu_aktualny=0;
if(id_rozdzialu2=="")then
return str;
elseif(nazwa_rozdzialu==id_rozdzialu2)then
return str;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
else
str=(str~="")and (str.."\n"..wiersz) or wiersz;
end;
end;
if((id_rozdzialu1)and(id_rozdzialu1==""))then
return str;
elseif((nazwa_rozdzialu_aktualna)and(nazwa_rozdzialu_aktualna==id_rozdzialu1))then
return str;
end;
return "";
end;
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local ktore=szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu[nazwa_szablonu];
if(not ktore)then return;end;
local tab=mw.text.split(tostring(ktore),"%s*;%s*",false);
local wynik="";
for _,num in pairs(tab)do
local numer_parametru=tonumber(num) or num;
for parametr,wartosc in pairs(tabela_parametrow_szablonu)do
if(parametr==numer_parametru)then
wynik=(wynik or "")..wartosc;
end;
end;
end;
return wynik;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-5])then tablica_danych_parametrow_szablonu_strony[-5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_z_dodatkiem_obiektowym=stronicowyparser_obiekty_modul.szablony_z_dodatkiem_obiektowym;
local dodatek=szablony_z_dodatkiem_obiektowym[nazwa_szablonu];
if(dodatek)then
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tabela_parametrow_szablonu)do
local name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](name);
local value=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](value);
dodatek=mw.ustring.gsub(dodatek,"%$%("..name.."%)",value);
end;
return dodatek;
end;
end);
if((tablica_danych_parametrow_szablonu_strony)and(kod)and(wynik))then
if(not tablica_danych_parametrow_szablonu_strony[-6])then tablica_danych_parametrow_szablonu_strony[-6]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-6];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=wynik;
end;
return wynik;
end;
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
return "\n\n ";
end,nil,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(poziom_iteracji==0)then
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
return true;
end;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst;
end;
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)
local CzySpecjalnaLinia=function(linia)
local czy_specjalna_linia=mw.ustring.match(linia,"^[%*,;:#]+") or mw.ustring.match(linia,"^%s*$") or mw.ustring.match(linia,"^%-%-%-%-");
if(not czy_specjalna_linia)then
if(mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))then
return true;
end;
end;
return czy_specjalna_linia;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local CzyLiniaZeSpecjalnymiSzablonami=function(linia)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_w_nie_w_tej_samej_linii=stronicowyparser_obiekty_modul.szablony_w_nie_w_tej_samej_linii;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_obiektow_strony_dany_modul_uzyskany);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_w_nie_w_tej_samej_linii[nazwa_szablonu])then
return true;
end;
end);
if(wynik)then return wynik;end;
end;
end;
return nil;
end;
----
--tekst=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony);
----
local tab_linie_tekstu=mw.text.split(tekst,"\n");
if(#tab_linie_tekstu==0)then return "";end;
local tekst_nowy=tab_linie_tekstu[1];
local czy_linia_poprz=CzySpecjalnaLinia(tekst_nowy) or CzyLiniaZeSpecjalnymiSzablonami(tekst_nowy);
if(not czy_linia_poprz)then
tekst_nowy=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst_nowy,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
for i=2,#tab_linie_tekstu,1 do
local linia=tab_linie_tekstu[i];
local aktualna_specjalna_linia=CzySpecjalnaLinia(linia) or CzyLiniaZeSpecjalnymiSzablonami(linia);
if(not aktualna_specjalna_linia)then
linia=p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
end;
if((not czy_linia_poprz)and(not aktualna_specjalna_linia))then
--local czy_wprowadzenie=mw.ustring.match(linia,"^>")
local tekst_nowy2=mw.ustring.match(tekst_nowy,"^(.*\n)[^%S\n]*\n[^%S\n]*$");
tekst_nowy=(tekst_nowy2 or tekst_nowy)..((tekst_nowy2) and "" or " ")..linia;
else
tekst_nowy=tekst_nowy.."\n"..linia;
end;
czy_linia_poprz=aktualna_specjalna_linia;
end;
return tekst_nowy;
end;
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
local nazwy_modul=require("Module:Nazwy");
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or {};
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or {};
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_analizaaspisurzeczy_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szeregi_modul=require("Module:Szeregi");
local szablony_do_usuwania_z_tekstu=stronicowyparser_obiekty_modul.szablony_do_usuwania_z_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=((pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)and(((nazwa_przestrzeni=="") and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej) or nil);
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
--local tab_nazwa_spisow_przekierowaniowych={};
if(czy_dalej_rozwazac_zakodowane)then
----
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=stronicowyparser_obiekty_modul.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local tab_szablony_bez_generowania_napisowego=stronicowyparser_obiekty_modul.szablony_bez_generowania_napisowego;
local szablony_nie_typowo_linkowe=stronicowyparser_obiekty_modul.szablony_nie_typowo_linkowe;
local znaczniki_szablonowe=stronicowyparser_obiekty_modul.znaczniki_szablonowe;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
----
local function UsuwanieNowychLiniiZnacznikowe(szablon)
local tak=nil;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ";
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
if(poziom_iteracji==0)then tak=true;end;
return " ",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,tak;
end;
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
czy_tak=czy_tak or true;
return szablon_spis_tresci_zawartosc;
end;
end;
return nil;
end);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
czy_tak=czy_tak or true;
return zawartosc,nil,true;
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return szablon,czy_tak;
end;
local Modyfikacja=function(szablon,obiekt,kod)
local czy_tak=false;
local szablon,czy_tak1=UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu(szablon,obiekt,kod);
czy_tak=czy_tak or czy_tak1;
local szablon,czy_tak2=UsuwanieNowychLiniiZnacznikowe(szablon);
czy_tak=czy_tak or czy_tak2;
local szablon,ile=mw.ustring.gsub(szablon,"\n"," ");
czy_tak=czy_tak or (ile>0);
return szablon,czy_tak;
end;
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu=parametr1;
local nazwa_szablonu=parametr2;
local tabela_modyfikatorow=parametr3;
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa=parametr1;
local zawartosc=parametr2;
local tab_atrybuty=parametr3;
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local wynik,czy_tak=Modyfikacja(szablon,obiekt,kod);
if(not czy_tak)then return nil,true;end;
return wynik,true;
end;
end;
end;
----
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
---
--local tab_nazwa_spisow_przekierowaniowych={};
---
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)
local spacja=" ";
local tab_spacja={
["nbsp"]=spacja,
["#32"]=spacja,
["#x20"]=spacja,
};
komorka=mw.ustring.gsub(komorka,"&([^&;]+);",tab_spacja);
local komorka_stara=komorka;
if(not nie_trimowanie)then
komorka=mw.text.trim(komorka);
end;
if(mw.ustring.match(komorka_stara,"^%s*[#%*:;>]"))then komorka=" "..komorka;end;
return ((not nie_trimowanie)and ("\n\n"..komorka.."\n") or komorka);
end;
----
local function ZamienNaKody(zawartosc,czy_szablon)
local function Linie(wzor)
zawartosc=mw.ustring.gsub(zawartosc,wzor,function(a,b)
return "&#"..mw.ustring.byte(a)..";"..(b or "");
end);
end;
if(not (mw.ustring.sub(zawartosc,1,1)=="\n"))then
Linie("^([=%*#:;])");
end;
local len=mw.ustring.len(zawartosc);
if(not (mw.ustring.sub(zawartosc,len,len)=="\n"))then
Linie("([=])([^%S\n]*)$");
end;
return zawartosc;
end;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=parametr1,parametr2,parametr3;
local FuncSzablon=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local czy_modyfikacja=false;
szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="div")then
if(p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(parametr,zawartosc,obiekt,kod))then
czy_modyfikacja=true;
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
if(czy_modyfikacja)then
return szablon;
end;
end;
end;
local function AnalizaSzablonu(szablon)
local wynik=p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
if(szablony_do_usuwania_z_tekstu[nazwa_szablonu])then return "";end;
local czy_szablony_bez_generowania_napisowego=tab_szablony_bez_generowania_napisowego[nazwa_szablonu];
if(czy_szablony_bez_generowania_napisowego)then return "";end;
if(szablony_nie_typowo_linkowe[nazwa_szablonu])then return "";end;
--if(mw.ustring.match(nazwa_szablonu,"/"))then return "";end;
end;
local szablon2=AnalizaSzablonu(szablon);
if(szablon2)then return szablon2;end;
local czy_center;
szablon,czy_center=UsuwanieZnacznikowe(szablon2 or szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) or szablon2;
if(szablon)then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=nil;
end;
end;
local wynik,tabela_parametrow_szablonu=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,tabela_parametrow_szablonu;
end;
end;
return nil,tabela_parametrow_szablonu;
end);
if(wynik)then return wynik;end;
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
return nil;
elseif(czy_center)then
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local zawartosc=tabela_parametrow_szablonu[szablon_ce];
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc;
else
return nil;
end;
else
return nil;
end;
end;
local znacznik_numer=znaczniki_szablonowe[nazwa_szablonu];
if(znacznik_numer)then
local parametr=tabela_parametrow_szablonu[znacznik_numer];
if(parametr)then
return ZamienNaKody(parametr,true);
end;
end;
end;
local wynik=FuncSzablon(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
if(wynik)then return wynik,nil,true;end;
return nil,true;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa~="center")and(not znaczniki_wprowadzenia_tekstu[nazwa]))then
if((nazwa~="ref")and(nazwa~="br")and(nazwa~="hr"))then
local fun=function()
if(nazwa~="div")then
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
elseif((zawartosc)and(zawartosc~=""))then
if(not p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod))then
local ile1;local ile2;
zawartosc,ile1=mw.ustring.gsub(zawartosc,"^([^\n]+\n)",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return PrzetwarzanieZnacznikowe(s,true).."\n\n";end;
return "\n";
end);
zawartosc,ile2=mw.ustring.gsub(zawartosc,"([^\n]+)$",function(s)
if(not mw.ustring.match(s,"^%s*$"))then return "\n\n"..s;end;
return "";
end);
return ZamienNaKody(zawartosc,false);
else
return zawartosc and ZamienNaKody(PrzetwarzanieZnacznikowe(zawartosc,true),false) or "";
end;
else
return "";
end;
end;
return fun,nil,true;
end;
else
if((zawartosc)and(p.CzyJestNapisWprowadzeniaTekstu(zawartosc) or p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)))then
return zawartosc,nil,true;
end;
local szablon,czy_center=UsuwanieZnacznikowe(szablon,obiekt,kod,nazwa,zawartosc,atrybuty);
if(szablon)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[100];
if(tablica_danych_parametrow_szablonu_strony_numer)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
return nil,true;
elseif(obiekt=="INNEPRE")then
if(mw.ustring.match(szablon,"^%s*$"))then
return "",nil,true;
end;
return nil,true;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local tak=false;
szablon=szablonowe_modul:KodowanieNiezakodowanychNormKodowychReferencjiTekstu(szablon,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false,function(szablon,obiekt,kod,parametr1,parametr2,parametr3)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
return " ";
else
local nazwa_zmiennej=znaczniki_szablonowe[nazwa_szablonu];
if(nazwa_zmiennej)then
local zawartosc=tabela_parametrow_szablonu[nazwa_zmiennej];
return zawartosc or " ";
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
tak=true;
local nazwa,zawartosc,atrybuty=parametr1,parametr2,parametr3;
if((nazwa=="br")or(nazwa=="hr"))then
return " ",nil,true;
else
return zawartosc or "",nil,true;
end;
end;
return nil,true;
end);
if(tak)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
end;
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=stronicowyparser_analizaaspisurzeczy_modul.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true);
if(not czy_element_spisu)then return "",nil,true;end;
elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"^[^\n]+","");
--szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+]?[^%S\n]*[^|\n]*|([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|%-[^%S\n|]*","\n\n");
szablon=mw.ustring.gsub(szablon,"||([^|\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end)
szablon=mw.ustring.gsub(szablon,"\n|%+[^%S\n]*([^\n]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
szablon=mw.ustring.gsub(szablon,"\n|([^\n|]+)",function(komorka)
return PrzetwarzanieZnacznikowe(komorka);
end);
return szablon,nil,true;
end;
return nil,true;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)
tekst_rozwiniety_calego_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_rozwiniety_calego_artykulu,function(linia)
local linia_nie_nil=mw.ustring.match(linia,wzor);
if(linia_nie_nil)then
local tak=nil;
local linia_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_nie_nil,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="Br")or(nazwa_szablonu=="Hr"))then
tak=true;
return " ";
end;
local szablon_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(szablon_ce)then
local tekst=tabela_parametrow_szablonu[szablon_ce];
if(tekst)then
tak=true;
return tekst;
end;
end;
end);
if(wynik)then return wynik,nil,true;end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="br")or(nazwa=="hr"))then
tak=true;
return " ",nil,true;
elseif((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
tak=true;
return zawartosc or "",nil,true;
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
if(czy_dodatni_rozdzial)then
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return zawartosc,nil,true;
end;
else
tak=true;
return "",nil,true;
end;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
zawartosc=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
local zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
tak=true;
return zawartosc,nil,true;
else
tak=true;
return "",nil,true;
end;
end;
return nil,true;
end,nil,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,nil,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return linia_tekst;
else
return nil;
end;
end);
end;
-----
LiniaRozdzialyDodatnieOrazUjemne("^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$",true);
LiniaRozdzialyDodatnieOrazUjemne("^([%*#;:]+[^\n]*)$",false);
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu])then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
else
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek=p.NapisWprowadzeniaTekstuHNumer(parametr);
if(naglowek)then
local obiekt_hnumer="ZNACZNIK";
local kod_hnumer=(#(tablica_analizy_obiektow_strony_dany_modul[obiekt_hnumer] or {}))+1;
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt_hnumer,kod_hnumer).."\n\n ",naglowek,obiekt_hnumer,kod_hnumer;
end;
end;
end;
end;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
elseif(obiekt=="INNEPRE")then
return "\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n";
elseif((obiekt=="PRE")or(obiekt=="ŹRÓDŁO")or(obiekt=="GALERIA")or(obiekt=="MAPAOBRAZU")or(obiekt=="PUDEŁKOWEJŚCIA"))then
return "\n\n"..szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod).."\n\n ";
end;
end,nil,nil,nil,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
-----
end;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"<!%-%-.-%-%->","");
local tab_magiczne_derektywy=stronicowyparser_obiekty_modul.magiczne_derektywy;
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"__(%u+)__",function(derektywy)
return tab_magiczne_derektywy[derektywy] and "" or nil;
end);
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"^(%-%-%-%-+)[^%S\n]*([^\n]+)","%1\n %2");
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n(%-%-%-%-+)[^%S\n]*([^\n]+)","\n%1\n %2");
--tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,"\n\n","\n\n");
if(czy_dalej_rozwazac_zakodowane)then
----
tekst_rozwiniety_calego_artykulu=p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE);
tekst_rozwiniety_calego_artykulu=__FUNKCJA_ANALIZA_SPISU and __FUNKCJA_ANALIZA_SPISU(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or tekst_rozwiniety_calego_artykulu;
end;
--mw.log( tekst_rozwiniety_calego_artykulu)
--local iter_main=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"\n([^\n]*)\n");
local iter_main=szeregi_modul.IteratorLiniiTekstu(tekst_rozwiniety_calego_artykulu);
local naglowek_aktualnego_rozdzialu;
local linia_naglowka_aktualnego_rozdzialu;
local poziom_aktualnego_rozdzialu;
local poczatek_aktualnego_rozdzialu;
local numeracja_aktualnego_rozdzialu;
local czy_rozdzial_aktualny_centrowany;
local czy_koniec=false;
----
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local czy_ce_spis_tresci=nil;
----
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parser=p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
-----
local tak_ce_spis_tresci=nil;
local m=0;
local function Wystepowanie(linia,funkcja1,funkcja2)
local czy_znaleziono_okladka=false;
local function RozwazajLinie(szablon,obiekt,kod)
if(szablon)then
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_okladka=mw.ustring.match(artykul,stronicowyparser_obiekty_modul.artykularne_niespisowe[1]);
if((artykul~="")and((numer_rodzaju_artykulu~=1)or((numer_rodzaju_artykulu==1)and(not czy_okladka))))then
return 1;
elseif(czy_okladka)then
czy_znaleziono_okladka=true;
end;
end;
else
return 0;
end;
end;
end;
local function RozwazajLinieZnacznikowe(zawartosc)
local wartosc;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local function CenterZnacznikLinia(szablon,obiekt,kod)
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(not wartosc)then return;end;
if(wartosc==1)then return nil;end;
return szablon,tekst;
end;
if(obiekt=="SZABLON")then
local szablon,tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end);
return szablon,tekst;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local szablon,tekst=CenterZnacznikLinia(szablon,obiekt,kod);
return szablon,tekst;
end;
end);
for szablon,obiekt,kod in iter do end;
return wartosc;
end;
local szablon_spis_tresci;
local function spis_tresci(wystepowanie_linkow,hn_number)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iter do
local function Spis(szablon,obiekt,kod)
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,p.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if((tab)and(numer_rodzaju_artykulu==1)and(stronicowyparser_analizaaspisurzeczy_modul.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false))))then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
else
return 0;
end;
end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end);
if(wynik)then return wynik;end;
elseif((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local wynik=Spis(szablon,obiekt,kod);
if(wynik)then return wynik;end;
end;
end;
wystepowanie_linkow=czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or wystepowanie_linkow;
wystepowanie_linkow=mw.text.trim(wystepowanie_linkow);
local czy_ce=jakie_spisy_tresci[wystepowanie_linkow];
if(czy_ce)then
tak_ce_spis_tresci=hn_number;
szablon_spis_tresci=wystepowanie_linkow;
return 1;
end;
end;
local wystepowanie_linkow=mw.ustring.match(linia,"^[#:%*;%d%.>]+%s*(.+)$") or mw.ustring.match(linia,"^(%S+%s*.+)$");
local tak=nil;
if(czy_dalej_rozwazac_zakodowane)then
if(wystepowanie_linkow)then
local czy_rozdzial=nil;local wartosc=nil;
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(wystepowanie_linkow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
local czy_linkw=(obiekt=="LINKW");local czy_linkz=(obiekt=="LINKZ");local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
if(czy_linkw or czy_linkz or czy_szablon or czy_znacznik)then
local podrecznik=nil;
if(czy_szablon)then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
-----
local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(czy_ce)then
local szablon_spis_tresci_zawartosc=tabela_parametrow_szablonu[czy_ce];
if(szablon_spis_tresci_zawartosc)then
szablon_spis_tresci_zawartosc=mw.ustring.match(szablon_spis_tresci_zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci_zawartosc,true);
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if(nazwa=="center")then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
wartosc=spis_tresci(szablon_spis_tresci,true);
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
szablon_spis_tresci=mw.ustring.match(zawartosc,"^'*%s*(.-)%s*'*$");
local hn_number=p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)
wartosc=spis_tresci(szablon_spis_tresci,hn_number);
else
wartosc=RozwazajLinieZnacznikowe(zawartosc);
end;
end;
else
wartosc=RozwazajLinie(szablon,obiekt,kod);
if(wartosc)then podrecznik=true;else podrecznik=false;end;
end;
if(podrecznik==true)then
if(not czy_rozdzial)then
if(wartosc==1)then
local wystepowanie_linku_lub_szablonu=(mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)))
and(not mw.ustring.match(tekst,"^'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*>"))
and (mw.ustring.match(tekst,"^[^%.]*%s*$"));
if(not wystepowanie_linku_lub_szablonu)then return nil;end;
czy_rozdzial=true;
elseif(wartosc==0)then
local ile;
tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
elseif(podrecznik==false)then
if(not wartosc)then
if(czy_znaleziono_okladka)then
local czy_nie_uwzgledniac_linii=mw.ustring.match(tekst,"[%s%p]*<[%s<]-%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(not czy_nie_uwzgledniac_linii)then
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
else
czy_znaleziono_okladka=false;
end;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end;
end;
if(not wartosc)then return;end;
tak=tak or (wartosc==1);
if(tak)then return;end;
return szablon,tekst;
else
local tekst,ile=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod),"");
return "", ((ile>0) and tekst or nil);
end;
end);
for szablon,obiekt,kod in iter do end;
end;
end;
if(tak)then
funkcja1(szablon_spis_tresci);
else
funkcja2();
end;
end
return function()
local tab_str={};
local linia;
local function IterMain()
for linia in iter_main do
local nazwa_rozdzialu;local poziom_rozdzialu;local poczatek_rozdzialu;local numeracja_rozdzialu;local czy_rozdzial_centrowany;
---------------------------------------
nazwa_rozdzialu=mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$");
if(nazwa_rozdzialu) then
nazwa_rozdzialu,poziom_rozdzialu=p.PodajNapisPoziomuWprowadzeniaTekstu(nazwa_rozdzialu);
end;
if(not nazwa_rozdzialu)then
if(czy_inne_rozdzialy_analizowac)then
if(not czy_w_spisie_tresci)then
Wystepowanie(linia,function(szablon_spis_tresci)
if(not tak_ce_spis_tresci)then
nazwa_rozdzialu="Spis treści";
poziom_rozdzialu=nil;
table.insert(tab_str,linia);
else
if(szablon_spis_tresci)then
local numeracja,rozdzial=p.NumeracjaOrazTekstWprowadzeniaTekstu(szablon_spis_tresci);
if((numeracja)and(rozdzial))then
numeracja_rozdzialu=numeracja;
nazwa_rozdzialu=rozdzial;
else
nazwa_rozdzialu=szablon_spis_tresci;
numeracja_rozdzialu=nil;
end;
else
nazwa_rozdzialu="Spis treści";
numeracja_rozdzialu=nil;
end;
local czy_rozdzial_naglowka_hn=tonumber(tak_ce_spis_tresci);
poziom_rozdzialu=czy_rozdzial_naglowka_hn or 2;
czy_rozdzial_centrowany=(not czy_rozdzial_naglowka_hn)and true or false;
poczatek_rozdzialu=nil;
--str="";
end;
end,function()
nazwa_rozdzialu=nil;
end);
end;
if(not nazwa_rozdzialu)then
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
end;
else
nazwa_rozdzialu=nil;
end;
end;
if(nazwa_rozdzialu)then
czy_w_spisie_tresci=true;
if(not naglowek_aktualnego_rozdzialu)then
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
else
----------------------------------------------
local naglowek_posredni_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu;
local linia_naglowka_posredni_aktualnego_rozdzialu=linia_naglowka_aktualnego_rozdzialu;
local poziom_posredni_aktualnego_rozdzialu=poziom_aktualnego_rozdzialu;
local poczatek_posredni_aktualnego_rozdzialu=poczatek_aktualnego_rozdzialu;
local numeracja_posredni_aktualnego_rozdzialu=numeracja_aktualnego_rozdzialu;
local czy_rozdzial_posredni_centrowany=czy_rozdzial_aktualny_centrowany;
----------------------------------------------
naglowek_aktualnego_rozdzialu=nazwa_rozdzialu;
linia_naglowka_aktualnego_rozdzialu=linia;
poziom_aktualnego_rozdzialu=poziom_rozdzialu;
poczatek_aktualnego_rozdzialu=poczatek_rozdzialu;
numeracja_aktualnego_rozdzialu=numeracja_rozdzialu;
czy_rozdzial_aktualny_centrowany=czy_rozdzial_centrowany;
local str=table.concat(tab_str,"\n");
if(not __FUNKCJA2)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_posredni_aktualnego_rozdzialu,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_posredni_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_posredni_aktualnego_rozdzialu=naglowek_posredni_aktualnego_rozdzialu and __FUNKCJA2(naglowek_posredni_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_poprz=nil;
m=m+1;
return {naglowek_posredni_aktualnego_rozdzialu,linia_naglowka_posredni_aktualnego_rozdzialu,},str,poziom_posredni_aktualnego_rozdzialu,poczatek_posredni_aktualnego_rozdzialu,numeracja_posredni_aktualnego_rozdzialu,czy_rozdzial_posredni_centrowany;
end;
else
if(naglowek_aktualnego_rozdzialu)then
table.insert(tab_str,linia);
end;
--linia_poprz=linia;
end;
end;
if(czy_koniec)then return nil;end;
czy_koniec=true;
---
local str=table.concat(tab_str,"\n");
--
if(not __FUNKCJA2)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu
and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul)
or naglowek_aktualnego_rozdzialu
)
or nil;
str=str and (czy_dalej_rozwazac_zakodowane and szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,nil,tablica_analizy_obiektow_strony_dany_modul) or str) or nil;
elseif(czy_dalej_rozwazac_zakodowane)then
naglowek_aktualnego_rozdzialu=naglowek_aktualnego_rozdzialu and __FUNKCJA2(naglowek_aktualnego_rozdzialu,nil,tablica_analizy_obiektow_strony_dany_modul,true) or nil;
str=str and __FUNKCJA2(str,nil,tablica_analizy_obiektow_strony_dany_modul,false) or nil;
end;
--linia_nast=nil;linia_poprz=nil;
m=m+1;
return (naglowek_aktualnego_rozdzialu and {naglowek_aktualnego_rozdzialu,linia_naglowka_aktualnego_rozdzialu,} or nil),str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
----
local naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany=IterMain();
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
return p;
fl10frp79wt4qms2y01xavks8orfvwf
Moduł:StronicowyParser/SpisTreści
828
58945
557754
557660
2026-09-27T09:34:06Z
Persino
2851
557754
Scribunto
text/plain
local p={};
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)
local parametry_modul=require("Module:Parametry");
local ile=0;
for i,tabela_rozdzial_artykulow2_i in pairs(tabela_rozdzial_artykulow2)do
i=parametry_modul.TypeNumber(i) and i or nil;
if((i)and(i>1))then
ile=ile+#(tabela_rozdzial_artykulow2_i or {});
end;
end;
return ile;
end;
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom,czy_nazwy_rozwiniete=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
---
local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu;
if(numer_rodzaju_artykulu)then
--mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu)
numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6);
end;
---
--Rozdzialy początek
local znaki_niedozwolone;
local function ParametrPierwszy(tab_artykul,czy_niedozwolone)
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
----
local znaki_niedozwolone;
if(czy_niedozwolone)then
znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]");
end;
----
--if(artykul)then
--artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
--artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",}
--artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul);
--end;
----
--if(parametry)then
-- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
-- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",}
-- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry);
--end;
----
--if(naglowek)then
-- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
-- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",}
-- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek);
--end;
----
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
end;
local parametry_modul=require("Module:Parametry");
----
if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
local czy_tablica=nil;local tablica_przekierowania=nil;
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
if(not czy_tablica)then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}
--tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]");
tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,};
else
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
if(not czy_inna_ksiazka)then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
else
local artykul=tablica_przekierowania[2];
local parametry=tablica_przekierowania[3];
local naglowek=tablica_przekierowania[4];
czy_tablica=(artykul)and(parametry or naglowek);
end;
if(not czy_tablica)then
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
tablica_artykulow_zebranych[3]=true;
end;
end;
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
----
if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
end;
----
if(znaki_niedozwolone)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści");
end;
end;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
local stara_nazwa_jednostki=nazwa_jednostki;
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
--local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or "");
--local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie);
--local strona=(tablica_przekierowania)
local przekierowanie;
if(--[[strona--]]tablica_przekierowania)then
--nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
--przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie)
przekierowanie=tablica_przekierowania[2];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4])
and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}
or przekierowanie
)
or nil;
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
else
nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
end;
local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2];
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)) or nil,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tab_stare,"TYTAN1")
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN2")
elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",};
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
else
tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[3])then
tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",};
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[4])then
tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",};
end;
local wiki_modul=require("Module:Wiki");
-----
local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1;
-----
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku])then
tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku]={};
end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2),};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
end;
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN")
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
end;
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local specjalne_modul=require("Module:Specjalne");
local szablonowe_modul=require("Module:Szablonowe");
local html_modul=require("Module:Html");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
-----
local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych;
local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
-----
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
----
local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(dodatek)then return dodatek;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
else
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
end;
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
----
if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
return szablon;
end;
end);
if(wynik)then return wynik;end;
----
local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1");
return rozdzial_na_tekst;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then
local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
return rozdzial_na_tekst;
else
return "";
end;
end);
----
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst);
return rozdzial_na_tekst;
end;
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local pelna_nazwa_spisu_tresci=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or "");
---
local szablonowe_modul=require("Module:Szablonowe");
local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci);
---
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_spisu_tresci);
local przekierowanie_spisu_tresci=nil;
local tab_nazwa_spisow_przekierowaniowych={};
--[[if(adres_ksiazki_glownego_spisu_tresci)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
end;]]
--if(adres_ksiazki_glownego_spisu_tresci)then
-- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
-- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
-- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
-- end;
if(strona)then
local html_modul=require("Module:Html");
strona=html_modul.DecodeHtml(strona,true);
local tabela_nazw={};
local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw);
if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end;
pelna_nazwa_spisu_tresci=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw);
nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
przekierowanie_spisu_tresci=nazwa_spisu_tresci;
----
pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci);
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
--local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_spisu_tresci,nil,true);
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,false,nil,nil,function(tekst_artykulu,pelna_nazwa_spisu_tresci_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
if(__FUNKCJA_ZBIERANIA_DANYCH)then
__FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
----
local techniczne_modul=require("Module:Techniczne");
----
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji;
local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
--[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "")
..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki)
..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "")
.."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]]
--local tablica_analizy_obiektow_strony_dany_modul={};
--local tablica_danych_parametrow_szablonu_strony={};
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow)
local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor);
if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nil,true);
if(tekst)then
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end
local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci];
tablica_spis_tresci.tekst=tekst;
tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci;
----
return tekst;
end;
end;
end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek)
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
----
local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(bez_kodow)then return;end;
----
local function PomijajLinkiOrazLicencje(szablon)
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu];
if(czy_szablony_licencji)then return true;end;
local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_szablony_ozdobne)then return true;end;
--local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
--local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu);
--if(wynik)then return wynik;end;
----
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end;
local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_wyzyskane_od_nazwy_szablonu)then return true;end;
end);
end;
----
local CzySzablonLinkLubLicencja=function(szablon)
local ile_szablon_linki_lub_licencje=0;
local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"),
function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then ile_szablon_linki_lub_licencje=ile_szablon_linki_lub_licencje+1;end;
return nil;
end);
if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end;
end;
local bez_kodow_linkow_wewnetrznych=(
not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]"))
and not CzySzablonLinkLubLicencja(szablon)
)
or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)")
or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)");
if(bez_kodow_linkow_wewnetrznych)then return;end;
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then return;end;
-----
return "";
--[[elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|","\n\n");
return szablon;]]
end;
return;
end;
if(not czy_naglowek)then
str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod)
local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod);
if(wynik)then return wynik;end;
return nil,true;
end);
return str;
end;
return str;
end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end);
----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy);
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local szablonowe_modul=require("Module:Szablonowe");
local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow;
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local specjalne_modul=require("Module:Specjalne");
local tablica_artykulow_zebranych={};
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
----
--local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
--local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
----
local maksymalny_rozmiar_rozdzialu_zerowego=50;
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)
--rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
--if(poziom_rozdzialu)then
-- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
--end;
if(not tabela_artykulow)then tabela_artykulow={};end;
local spreparowany_uzyskany_tekst_rozdzialu=nil;
----
local tabela_rozdzial_artykulow;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
----
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst;
end;
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
if((poziom_rozdzialu or 0)>0)then
if(not iter)then
iter=mw.ustring.gmatch(rozdzial,"([^\n]+)");
end;
local wartosc=iter();
if(not wartosc)then
czy_rozdzial=true;
iter=nil;
else
return "","",wartosc,true;
end;
else
czy_rozdzial=true;
end;
end;
local function dane_iteratora()
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter();
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return nil;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return dane_iteratora();
end;
end;
return dane_iteratora();
end;
end;
----
local function LiniaArtykulow(linia)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod=iter();
if((not szablon) or (not kod) or(not obiekt))then return {};end;
local function SzablonAnalizujKompletnosc(szablon)
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu];
end);
return wynik;
end;
-----
local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil);
-----
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local tak_drugie=SzablonAnalizujKompletnosc(szablon);
if(tak_pierwsze)then
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3");
end;
else
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3");
end;
end;
end;
end;
local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykulow,1 do
tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykulow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local nie_pomijaj_tego_rozdzialu=false;
if((not przedrostek_listy)or(#przedrostek_listy==0))then
local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then
nie_pomijaj_tego_rozdzialu=true;
end;
else
local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(not czy_pominac_ten_rozdzial_jako_linie)then
nie_pomijaj_tego_rozdzialu=true;
else
nie_pomijaj_tego_rozdzialu=false;
end;
end;
if(nie_pomijaj_tego_rozdzialu)then
local ile=0;
local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]])
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
local czy_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod);
local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu]
or szablony_licencji[nazwa_szablonu]
--or szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_link)then ile=ile+1;end;
return czy_szablon,obiekt,kod;
end);
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then
ile=ile+1;
return true,obiekt,kod;
end;
elseif(obiekt=="LINKZ")then
ile=ile+1;
return true,obiekt,kod;
end;
end);
----
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
----
local nowa_linia=false;
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
--if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end;
if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then
tab_stare[2][1]=tab_stare[2][1]+1;
end;
if(not w_rozdziale)then
local function CzyZaliczac()
return ((not mw.ustring.match(linia,"^%w+%p+"))
and mw.ustring.match(linia,"^%s*'*%s*%w+"));
--or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ"));
end;
if(nowa_linia)then
tab_stare[2][4]=true;
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then
nowa_linia=true;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
tab_stare[2][4]=true;
tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil;
tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={};
table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare);
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
end;
end;
local function AnalizaLiniiObiekty(linia_rozwazana)
local tab_linia=LiniaArtykulow(linia_rozwazana);
for k=1,#tab_linia,1 do
local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
local tab_nieobslugiwane=nil;
for szablon,obiekt,kod in iterator2 do
local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ"));
if(czy_szablon or czy_link)then
local przerwij=nil;
if(czy_szablon)then
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu ,tabela_modyfikatorow)
----
--local przerwij=nil;
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
if(tabela_spisu[1]==true)then
--local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod);
local numer_link=tabela_spisu["numer_link"];
for name,value in pairs(tabela_parametrow_szablonu)do
if(name~=numer_link)then
local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name];
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end;
for szablon,obiekt,kod in iter do
if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end;
tab_nieobslugiwane[obiekt][kod]=true;
end;
end;
end;
local tyt=tabela_parametrow_szablonu[numer_link];
przedrostek_listy="";
tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$");
przerwij=true;
else
przedrostek_listy="";
tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]];
szablon=tabela_parametrow_szablonu[tabela_spisu["link"]];
przerwij=true;
end;
end;
end);
end;
--[[if(przerwij)then
local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon2,obiekt2,kod2 in iterator3 do
if(obiekt2=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2);
local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_linku)then
szablon=szablon2;
break;
end;
elseif(obiekt2=="LINKW")then
szablon=szablon2;
break;
end;
end;
end;]]
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom;
local link_szablon=nil;
local czy_obslugiwane=nil;
local CzyObslugiwane=function()
local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod]));
czy_obslugiwane=wartosc;
return (not wartosc);
end;
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
local linia_artykokow=tab_linia[k];
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]);
--mw.log()
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--mw.logObject(tabela_rozdzial_artykulow)
else
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--[[if(przerwij)then break;end;]]
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
---
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji)
if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then
if(tabela_parametrow_szablonu_licencji)then
local autor=tabela_parametrow_szablonu_licencji["Autor"];
local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"];
local email=tabela_parametrow_szablonu_licencji["Email"];
local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"];
local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"];
local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"];
local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"];
local frame=mw.getCurrentFrame();
if(autor~=nil)then
autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,pelna_nazwa_spisu_tresci ,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(szkoly~=nil)then
szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(email~=nil)then
email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(dotyczy~=nil)then
dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(licencjonowanie~=nil)then
licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(umowa_prawna~=nil)then
umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(konsekwencje~=nil)then
konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
return true;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
end;
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
--mw.logObject(tabela_artykulow);
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
end;
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeTable(tabela_artykulow))then return;end;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
for _,tab_lista in ipairs(tabela_artykulow)do
if(tab_lista[2])then
for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then
return artykul_bez_naglowka_w_bazie;
end;
end;
end;
end;
end;
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)
local adres_ksiazki_glownego_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local nazwy_modul=require("Module:Nazwy");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,tekst=true,};
if(ile2>0)then
local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_spisu_tresci)then
local html_modul=require("Module:Html");
strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true);
local tabela_nazw={};
local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw);
local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="")
and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw)
or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
----
if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then
if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then
----
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
if((wynik or 0)==1)then
return 1;
end;
----
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2;
pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
else
return 2;
end;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)
if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
----
local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil;
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
---
if(not tablista_artykulow[1][1][2][1])then
for numer,tab_lista in ipairs(tablista_artykulow[1])do
if(numer>1)then
tab_element[numer]=tab_lista;
end;
end;
table.remove(tablista_artykulow,1);
end;
---
for _,tab_lista in ipairs(tablista_artykulow)do
local numer_rozdzialu=tab_lista[1][2][1];
local czy_rozdzial_centrowany=tab_lista[1][2][4];
if(numer_rozdzialu>0)then
tab_lista[1][2][1]=numer_rozdzialu+1;
end;
if(czy_rozdzial_centrowany)then break;end;
end;
---
numer=numer+1;
---
--if(not tablista_artykulow)then tablista_artykulow={};end;
----
table.insert(tablista_artykulow,1,tab_element);
if(spis_tresci)then
if(not tab_inne_spisy)then tab_inne_spisy={};end;
table.insert(tab_inne_spisy,spis_tresci);
if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end;
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
table.insert(tablista_artykulow[1][2],1,tab_stare);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)
--mw.logObject(tablista_artykulow,"TYTAn123fhh");
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
--mw.logObject(tablista_artykulow_iter,spis_tresci);
----
if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
for _,value in ipairs(tablista_artykulow_iter)do
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,value);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
if(artykul_spisu_rzeczy)then
local numer=1;
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
return tabela_artykulow,tab_inne_spisy;
end;
local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki;
----
adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien;
----
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
if(not tekst)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={};
local szablonowe_modul=require("Module:Szablonowe");
local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil);
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji);
local szablon_uklad_autonawigacji;
local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
local tabela_parametrow_szablonu_uklad_autonawigacji;
local nazwa_szablonu_uklad_autonawigacji;
local tabela_modyfikatorow_uklad_autonawigacji;
local adres_ustawien_szablonowy=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](adres_ustawien,nil,nil);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien_szablonowy,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu;
nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu;
tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow;
if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then
szablon_uklad_autonawigacji=szablon;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
if(not szablon_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
--local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji);
if(not tabela_parametrow_szablonu_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local parametry_modul=require("Module:Parametry");
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
----
local html_modul=require("Module:Html");
----
local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil;
if(czy_automat_manualny)then
local sub_nazwa_spis_tresci;
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil;
if(parametry_modul.CzyTak(spis_tresci))then
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw);
if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then
sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw);
else
sub_nazwa_spis_tresci="";
end;
else
sub_nazwa_spis_tresci="";
end;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local frame=mw.getCurrentFrame();
for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do
tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}");
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}");
return szablon;
end;
end),};
end;
local nazwy_modul=require("Module:Nazwy");
local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"];
local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil;
local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"];
local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil;
----
local tab_inne_spisy;local nazwa_glownego_spisu;
local tablista_artykulow;
local licencja;
local numer=1;
----
--local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
----
local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci;
if(not czy_bez_spisow_tresci)then
local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
if(spis_tresci_main)then
spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true);
---
spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,};
end;
local tabela_nazw={};
local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or pelna_nazwa_ksiazki;
if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then
return 0;
end;
nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or "";
else
nazwa_glownego_spisu="";
end;
if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
if(przekierowanie_spisu_tresci)then
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
end;
if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
end;
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
local iter=IteratorSpisTresci();
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
for spis_tresci in iter do
---
if(not parametry_modul.CzyTak(spis_tresci))then return;end;
spis_tresci=html_modul.DecodeHtml(spis_tresci,true);
spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",};
---
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
end;
end;
----
local IteratorFun=function()
local liczba=1;
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
return function()
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
liczba=liczba+1;
return strona,nazwa;
end;
end;
local tablica_stron_ksiazki={};
local tablica_stron_inne={};
local iter=IteratorFun();
local ksiazkawe_modul=require("Module:Książkowe");
local pudelko_modul=require("Module:Pudełko");
local wiki_modul=require("Module:Wiki");
local dodatkowe_artykuly=nil;
local tablica_artykulow_zebranych={};
local tab_nazwa_spisow_przekierowaniowych={};
local dodatkowe_artykuly=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local tabela_rozdzial_artykulow=nil;
----
local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci);
----
--local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
----
for strona,nazwa in iter do
local function ZbieranieDanychStronZAutonawigacji()
if(not parametry_modul.CzyTak(strona))then return;end;
strona=html_modul.DecodeHtml(strona,true);
nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil;
if(not dodatkowe_artykuly)then
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
end;
---
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)
if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end;
----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
local czy_w_podreczniku=tab_stare[5];
local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil;
local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil;
----
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
----
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
end;
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",pelna_nazwa_ksiazki,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
end;
ZbieranieDanychStronZAutonawigacji();
end;
----
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
end;
return p;
3jfp3g0tkjr367phah3pkzkycu2wbpa
557755
557754
2026-09-27T09:43:24Z
Persino
2851
557755
Scribunto
text/plain
local p={};
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)
local parametry_modul=require("Module:Parametry");
local ile=0;
for i,tabela_rozdzial_artykulow2_i in pairs(tabela_rozdzial_artykulow2)do
i=parametry_modul.TypeNumber(i) and i or nil;
if((i)and(i>1))then
ile=ile+#(tabela_rozdzial_artykulow2_i or {});
end;
end;
return ile;
end;
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom,czy_nazwy_rozwiniete=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,nil);
---
local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu;
if(numer_rodzaju_artykulu)then
--mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu)
numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6);
end;
---
--Rozdzialy początek
local znaki_niedozwolone;
local function ParametrPierwszy(tab_artykul,czy_niedozwolone)
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
----
local znaki_niedozwolone;
if(czy_niedozwolone)then
znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]");
end;
----
--if(artykul)then
--artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
--artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",}
--artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul);
--end;
----
--if(parametry)then
-- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul)
-- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",}
-- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry);
--end;
----
--if(naglowek)then
-- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
-- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",}
-- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek);
--end;
----
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
end;
local parametry_modul=require("Module:Parametry");
----
if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
local czy_tablica=nil;local tablica_przekierowania=nil;
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
if(not czy_tablica)then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}
--tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]");
tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,};
else
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
if(not czy_inna_ksiazka)then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
else
local artykul=tablica_przekierowania[2];
local parametry=tablica_przekierowania[3];
local naglowek=tablica_przekierowania[4];
czy_tablica=(artykul)and(parametry or naglowek);
end;
if(not czy_tablica)then
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
tablica_artykulow_zebranych[3]=true;
end;
end;
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
----
if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
end;
----
if(znaki_niedozwolone)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści");
end;
end;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
local stara_nazwa_jednostki=nazwa_jednostki;
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
--local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or "");
--local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie);
--local strona=(tablica_przekierowania)
local przekierowanie;
if(--[[strona--]]tablica_przekierowania)then
--nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
--przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie)
przekierowanie=tablica_przekierowania[2];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4])
and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}
or przekierowanie
)
or nil;
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
else
nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
end;
local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2];
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)) or nil,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tab_stare,"TYTAN1")
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN2")
elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",};
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
else
tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
if((not czy_nazwy_rozwiniete)and(tab_pozycja_elementow_w_spisie_rzeczy[2]))then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tab_pozycja_elementow_w_spisie_rzeczy[2],pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[3])then
tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",};
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[4])then
tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",};
end;
local wiki_modul=require("Module:Wiki");
-----
local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1;
-----
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku])then
tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku]={};
end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2),};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
end;
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN")
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
end;
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local specjalne_modul=require("Module:Specjalne");
local szablonowe_modul=require("Module:Szablonowe");
local html_modul=require("Module:Html");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
-----
local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych;
local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
-----
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
----
local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(dodatek)then return dodatek;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
else
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
end;
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
----
if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
return szablon;
end;
end);
if(wynik)then return wynik;end;
----
local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1");
return rozdzial_na_tekst;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then
local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
return rozdzial_na_tekst;
else
return "";
end;
end);
----
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst);
return rozdzial_na_tekst;
end;
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local pelna_nazwa_spisu_tresci=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or "");
---
local szablonowe_modul=require("Module:Szablonowe");
local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci);
---
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_spisu_tresci);
local przekierowanie_spisu_tresci=nil;
local tab_nazwa_spisow_przekierowaniowych={};
--[[if(adres_ksiazki_glownego_spisu_tresci)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
end;]]
--if(adres_ksiazki_glownego_spisu_tresci)then
-- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
-- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
-- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
-- end;
if(strona)then
local html_modul=require("Module:Html");
strona=html_modul.DecodeHtml(strona,true);
local tabela_nazw={};
local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw);
if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end;
pelna_nazwa_spisu_tresci=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw);
nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
przekierowanie_spisu_tresci=nazwa_spisu_tresci;
----
pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci);
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
--local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_spisu_tresci,nil,true);
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,false,nil,nil,function(tekst_artykulu,pelna_nazwa_spisu_tresci_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
if(__FUNKCJA_ZBIERANIA_DANYCH)then
__FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
----
local techniczne_modul=require("Module:Techniczne");
----
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji;
local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
--[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "")
..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki)
..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "")
.."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]]
--local tablica_analizy_obiektow_strony_dany_modul={};
--local tablica_danych_parametrow_szablonu_strony={};
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow)
local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor);
if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,nil,true);
if(tekst)then
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end
local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci];
tablica_spis_tresci.tekst=tekst;
tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci;
----
return tekst;
end;
end;
end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek)
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
----
local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(bez_kodow)then return;end;
----
local function PomijajLinkiOrazLicencje(szablon)
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu];
if(czy_szablony_licencji)then return true;end;
local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_szablony_ozdobne)then return true;end;
--local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
--local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu);
--if(wynik)then return wynik;end;
----
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end;
local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_wyzyskane_od_nazwy_szablonu)then return true;end;
end);
end;
----
local CzySzablonLinkLubLicencja=function(szablon)
local ile_szablon_linki_lub_licencje=0;
local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"),
function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then ile_szablon_linki_lub_licencje=ile_szablon_linki_lub_licencje+1;end;
return nil;
end);
if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end;
end;
local bez_kodow_linkow_wewnetrznych=(
not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]"))
and not CzySzablonLinkLubLicencja(szablon)
)
or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)")
or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)");
if(bez_kodow_linkow_wewnetrznych)then return;end;
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then return;end;
-----
return "";
--[[elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|","\n\n");
return szablon;]]
end;
return;
end;
if(not czy_naglowek)then
str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod)
local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod);
if(wynik)then return wynik;end;
return nil,true;
end);
return str;
end;
return str;
end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end);
----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy);
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local szablonowe_modul=require("Module:Szablonowe");
local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow;
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local specjalne_modul=require("Module:Specjalne");
local tablica_artykulow_zebranych={};
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
----
--local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
--local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
----
local maksymalny_rozmiar_rozdzialu_zerowego=50;
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)
--rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
--if(poziom_rozdzialu)then
-- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
--end;
if(not tabela_artykulow)then tabela_artykulow={};end;
local spreparowany_uzyskany_tekst_rozdzialu=nil;
----
local tabela_rozdzial_artykulow;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
----
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst;
end;
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
if((poziom_rozdzialu or 0)>0)then
if(not iter)then
iter=mw.ustring.gmatch(rozdzial,"([^\n]+)");
end;
local wartosc=iter();
if(not wartosc)then
czy_rozdzial=true;
iter=nil;
else
return "","",wartosc,true;
end;
else
czy_rozdzial=true;
end;
end;
local function dane_iteratora()
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter();
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return nil;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return dane_iteratora();
end;
end;
return dane_iteratora();
end;
end;
----
local function LiniaArtykulow(linia)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod=iter();
if((not szablon) or (not kod) or(not obiekt))then return {};end;
local function SzablonAnalizujKompletnosc(szablon)
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu];
end);
return wynik;
end;
-----
local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil);
-----
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local tak_drugie=SzablonAnalizujKompletnosc(szablon);
if(tak_pierwsze)then
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3");
end;
else
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3");
end;
end;
end;
end;
local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykulow,1 do
tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykulow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local nie_pomijaj_tego_rozdzialu=false;
if((not przedrostek_listy)or(#przedrostek_listy==0))then
local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then
nie_pomijaj_tego_rozdzialu=true;
end;
else
local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(not czy_pominac_ten_rozdzial_jako_linie)then
nie_pomijaj_tego_rozdzialu=true;
else
nie_pomijaj_tego_rozdzialu=false;
end;
end;
if(nie_pomijaj_tego_rozdzialu)then
local ile=0;
local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]])
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
local czy_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod);
local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu]
or szablony_licencji[nazwa_szablonu]
--or szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_link)then ile=ile+1;end;
return czy_szablon,obiekt,kod;
end);
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then
ile=ile+1;
return true,obiekt,kod;
end;
elseif(obiekt=="LINKZ")then
ile=ile+1;
return true,obiekt,kod;
end;
end);
----
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
----
local nowa_linia=false;
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
--if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end;
if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then
tab_stare[2][1]=tab_stare[2][1]+1;
end;
if(not w_rozdziale)then
local function CzyZaliczac()
return ((not mw.ustring.match(linia,"^%w+%p+"))
and mw.ustring.match(linia,"^%s*'*%s*%w+"));
--or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ"));
end;
if(nowa_linia)then
tab_stare[2][4]=true;
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then
nowa_linia=true;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
tab_stare[2][4]=true;
tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil;
tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={};
table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare);
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
end;
end;
local function AnalizaLiniiObiekty(linia_rozwazana)
local tab_linia=LiniaArtykulow(linia_rozwazana);
for k=1,#tab_linia,1 do
local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
local tab_nieobslugiwane=nil;
for szablon,obiekt,kod in iterator2 do
local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ"));
if(czy_szablon or czy_link)then
local przerwij=nil;
if(czy_szablon)then
----
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu ,tabela_modyfikatorow)
----
--local przerwij=nil;
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
if(tabela_spisu[1]==true)then
--local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod);
local numer_link=tabela_spisu["numer_link"];
for name,value in pairs(tabela_parametrow_szablonu)do
if(name~=numer_link)then
local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name];
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end;
for szablon,obiekt,kod in iter do
if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end;
tab_nieobslugiwane[obiekt][kod]=true;
end;
end;
end;
local tyt=tabela_parametrow_szablonu[numer_link];
przedrostek_listy="";
tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$");
przerwij=true;
else
przedrostek_listy="";
tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]];
szablon=tabela_parametrow_szablonu[tabela_spisu["link"]];
przerwij=true;
end;
end;
end);
end;
--[[if(przerwij)then
local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);
for szablon2,obiekt2,kod2 in iterator3 do
if(obiekt2=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2);
local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_linku)then
szablon=szablon2;
break;
end;
elseif(obiekt2=="LINKW")then
szablon=szablon2;
break;
end;
end;
end;]]
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom;
local link_szablon=nil;
local czy_obslugiwane=nil;
local CzyObslugiwane=function()
local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod]));
czy_obslugiwane=wartosc;
return (not wartosc);
end;
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
local linia_artykokow=tab_linia[k];
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]);
--mw.log()
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--mw.logObject(tabela_rozdzial_artykulow)
else
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--[[if(przerwij)then break;end;]]
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
---
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji)
if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then
if(tabela_parametrow_szablonu_licencji)then
local autor=tabela_parametrow_szablonu_licencji["Autor"];
local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"];
local email=tabela_parametrow_szablonu_licencji["Email"];
local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"];
local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"];
local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"];
local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"];
local frame=mw.getCurrentFrame();
if(autor~=nil)then
autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,pelna_nazwa_spisu_tresci ,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(szkoly~=nil)then
szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(email~=nil)then
email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(dotyczy~=nil)then
dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(licencjonowanie~=nil)then
licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(umowa_prawna~=nil)then
umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(konsekwencje~=nil)then
konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,pelna_nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
return true;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
end;
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
--mw.logObject(tabela_artykulow);
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
end;
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeTable(tabela_artykulow))then return;end;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
for _,tab_lista in ipairs(tabela_artykulow)do
if(tab_lista[2])then
for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then
return artykul_bez_naglowka_w_bazie;
end;
end;
end;
end;
end;
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)
local adres_ksiazki_glownego_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local nazwy_modul=require("Module:Nazwy");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,tekst=true,};
if(ile2>0)then
local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_spisu_tresci)then
local html_modul=require("Module:Html");
strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true);
local tabela_nazw={};
local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw);
local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="")
and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw)
or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
----
if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then
if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then
----
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
if((wynik or 0)==1)then
return 1;
end;
----
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2;
pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
else
return 2;
end;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)
if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
----
local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil;
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
---
if(not tablista_artykulow[1][1][2][1])then
for numer,tab_lista in ipairs(tablista_artykulow[1])do
if(numer>1)then
tab_element[numer]=tab_lista;
end;
end;
table.remove(tablista_artykulow,1);
end;
---
for _,tab_lista in ipairs(tablista_artykulow)do
local numer_rozdzialu=tab_lista[1][2][1];
local czy_rozdzial_centrowany=tab_lista[1][2][4];
if(numer_rozdzialu>0)then
tab_lista[1][2][1]=numer_rozdzialu+1;
end;
if(czy_rozdzial_centrowany)then break;end;
end;
---
numer=numer+1;
---
--if(not tablista_artykulow)then tablista_artykulow={};end;
----
table.insert(tablista_artykulow,1,tab_element);
if(spis_tresci)then
if(not tab_inne_spisy)then tab_inne_spisy={};end;
table.insert(tab_inne_spisy,spis_tresci);
if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end;
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
table.insert(tablista_artykulow[1][2],1,tab_stare);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)
--mw.logObject(tablista_artykulow,"TYTAn123fhh");
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
--mw.logObject(tablista_artykulow_iter,spis_tresci);
----
if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
for _,value in ipairs(tablista_artykulow_iter)do
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,value);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
if(artykul_spisu_rzeczy)then
local numer=1;
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
return tabela_artykulow,tab_inne_spisy;
end;
local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki;
----
adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien;
----
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
if(not tekst)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={};
local szablonowe_modul=require("Module:Szablonowe");
local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil);
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji);
local szablon_uklad_autonawigacji;
local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
local tabela_parametrow_szablonu_uklad_autonawigacji;
local nazwa_szablonu_uklad_autonawigacji;
local tabela_modyfikatorow_uklad_autonawigacji;
local adres_ustawien_szablonowy=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](adres_ustawien,nil,nil);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien_szablonowy,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu;
nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu;
tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow;
if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then
szablon_uklad_autonawigacji=szablon;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
if(not szablon_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
--local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji);
if(not tabela_parametrow_szablonu_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local parametry_modul=require("Module:Parametry");
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
----
local html_modul=require("Module:Html");
----
local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil;
if(czy_automat_manualny)then
local sub_nazwa_spis_tresci;
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil;
if(parametry_modul.CzyTak(spis_tresci))then
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw);
if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then
sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw);
else
sub_nazwa_spis_tresci="";
end;
else
sub_nazwa_spis_tresci="";
end;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local frame=mw.getCurrentFrame();
for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do
tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}");
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}");
return szablon;
end;
end),};
end;
local nazwy_modul=require("Module:Nazwy");
local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"];
local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil;
local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"];
local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil;
----
local tab_inne_spisy;local nazwa_glownego_spisu;
local tablista_artykulow;
local licencja;
local numer=1;
----
--local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
----
local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci;
if(not czy_bez_spisow_tresci)then
local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
if(spis_tresci_main)then
spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true);
---
spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,};
end;
local tabela_nazw={};
local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or pelna_nazwa_ksiazki;
if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then
return 0;
end;
nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or "";
else
nazwa_glownego_spisu="";
end;
if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
if(przekierowanie_spisu_tresci)then
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
end;
if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
end;
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
local iter=IteratorSpisTresci();
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
for spis_tresci in iter do
---
if(not parametry_modul.CzyTak(spis_tresci))then return;end;
spis_tresci=html_modul.DecodeHtml(spis_tresci,true);
spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",};
---
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
end;
end;
----
local IteratorFun=function()
local liczba=1;
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
return function()
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
liczba=liczba+1;
return strona,nazwa;
end;
end;
local tablica_stron_ksiazki={};
local tablica_stron_inne={};
local iter=IteratorFun();
local ksiazkawe_modul=require("Module:Książkowe");
local pudelko_modul=require("Module:Pudełko");
local wiki_modul=require("Module:Wiki");
local dodatkowe_artykuly=nil;
local tablica_artykulow_zebranych={};
local tab_nazwa_spisow_przekierowaniowych={};
local dodatkowe_artykuly=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local tabela_rozdzial_artykulow=nil;
----
local pelna_nazwa_spisu_tresci=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local pelna_nazwa_spisu_tresci_szablonowa=szablonowe_modul["SzablonowaKompletnaNazwaStrony"](pelna_nazwa_spisu_tresci);
----
--local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
----
for strona,nazwa in iter do
local function ZbieranieDanychStronZAutonawigacji()
if(not parametry_modul.CzyTak(strona))then return;end;
strona=html_modul.DecodeHtml(strona,true);
nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil;
if(not dodatkowe_artykuly)then
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
end;
---
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)
if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end;
----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
local czy_w_podreczniku=tab_stare[5];
local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil;
local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil;
----
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
----
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
end;
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",pelna_nazwa_ksiazki,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
end;
ZbieranieDanychStronZAutonawigacji();
end;
----
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
end;
return p;
qk7a1la36cbew21f316186mi2d0wqij
Moduł:StronicowyParser/AnalizaSpisuRzeczy
828
60192
557753
557661
2026-09-27T09:34:04Z
Persino
2851
557753
Scribunto
text/plain
local p={};
function p.SzukanieNaPodstawieWzoru(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do or 1;
local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil;
while(true)do
local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))then
return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
end;
a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1;
if(not jak)then
if(a1==b1)then
liczba_start=b1+1;
else
liczba_start=b1;
end;
else
liczba_start=b1+1;
end;
end;
end;
end;
function p.SzukanieNaPodstawieWzoruElementuLinii(tekst,wzor_linia,liczba_od,liczba_do,czy_od_tylu)
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;
local dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
end;
function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA);
if(not kom)then
local tab=((tab_2 and tab_2[1]) and tab_2 or nil);
if(tab)then
if(numer_rodzaju_artykulu==1)then
local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false);
local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s"))))
local function StronyWstepu(artykul)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=true;
for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do
tak=tak and (not mw.ustring.match(artykul,wzor));
if(not tak)then return tak;end;
end;
return tak;
end;
if((czy_glowny_spis_tresci)and(artykul==""))then
return false,numer_rodzaju_artykulu,czy_podrecznik,false;
else
if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then
return true,numer_rodzaju_artykulu,czy_podrecznik,false;
else
return true,numer_rodzaju_artykulu,czy_podrecznik,true;
end;
end;
else
return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false;
end;
end;
end;
return false,nil;
end;
function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(obiekt=="SZABLON")then
local szablonowe_modul=require("Module:Szablonowe");
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(nazwa_szablonu=="SpisTreści")then
return true,1;
else
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
local parametr_linku;
if(tabela_spisu[1]==true)then
local numer_link=tabela_spisu["numer_link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
else
local numer_link=tabela_spisu["link"];
parametr_linku=tabela_parametrow_szablonu[numer_link];
end;
if(parametr_linku)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
end;
end;
end;
end;
end);
if(czy_element_spisu)then
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
end;
return false;
end;
function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
end;
return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka;
end;
function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
--czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
return true;
elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then
tak=true;
break;
elseif(czy_okladka)then
tak=true;
break;
end;
end;
end;
return (not tak);
end;
function p.SzukajObiektuArtykularnegoWeElemencieTekstowym(tekst,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych, czy_usun_okladka,czy_glowny_spis_tresci,czy_wszystkie_linki,bez_innych_stron)
local start=1;
while(true)do
local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst,szablon_normy_kodowania_szablonu,start);
local koniec_obiekt;local kod_obiekt;local obiekt=nil;
if(start_szablon)then
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local kod=kod_szablon;
local obiekt=obiekt_szablon;
local kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci);
if((czy_element_spisu)and((czy_wszystkie_linki)or(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((bez_innych_stron)and(numer_rodzaju_artykulu>1)))))then
return true;
end;
end;
start=koniec_szablon;
else
return false;
end;
end;
end;
function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tak=false;
local techniczne_modul=require("Module:Techniczne");
linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia);
for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do
tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$")));
if(tak)then return true;end;
end;
return nil;
end;
function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local techniczne_modul=require("Module:Techniczne");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
local czy_zerowy_spis_rzeczy=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(rozdzial,true);
if(czy_zerowy_spis_rzeczy)then
return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial;
else
liczba_od=jak and liczba_start_rozdzial or liczba_koniec_rozdzial;
end;
else
return;
end;
end;
return nil;
end;
function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(not czy_ce)then return;end;
local zawartosc=tabela_parametrow_szablonu[czy_ce];
if(not zawartosc)then return;end;
return true;
end);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((nazwa)and(zawartosc))then
if(nazwa=="center")then
return true;
end;
end;
end;
end;
function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
while(true)do
local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak);
if(liczba_start_rozdzial)then
if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod,poziom_iteracji=iterator();
local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(not wynik)then
local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((rozdzial)and(czy_standardowe_rozdzialy))then
return liczba_start_rozdzial,liczba_koniec_rozdzial,linia;
end;
end;
end;
if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end;
else
return;
end;
end;
return nil;
end;
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,czy_rozdzial_rownaniowy_dodatni,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona;
if(czy_rozdzial_rownaniowy_dodatni)then
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu)
else
__liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
end;
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local liczba_szablon_centrowany=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
if(liczba_szablon_centrowany)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany];
if(naglowek)then
if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(naglowek,nil);
end;
end;
else
local liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu)then
local naglowek=tabela_parametrow_szablonu[liczba_szablon_napisowu_sztucznego_wprowadzenia_tekstu];
if(naglowek)then
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if((naglowek)and(poziom_naglowka))then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end;
return true;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
norma_kodowania_szablonu,
false,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="center")then
if(zawartosc)then
if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then
return __FUNKCJA(zawartosc,nil);
end;
end;
elseif(znaczniki_wprowadzenia_tekstu[nazwa])then
if(zawartosc)then
local numer_rozdzialu=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
if(numer_rozdzialu)then
return __FUNKCJA(zawartosc,numer_rozdzialu);
end;
end;
end;
return true;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(
wzor_rozdzialu_dodatniego,
true,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
end;
return true;
end);
if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then
local _max_min;
if(czy_od_tylu)then
_max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0);
else
_max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu);
end;
local function ParametryNapisuWprowadzeniaTekstu(liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon,spis_naglowka_szablon_poziom);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik,spis_naglowka_znacznik_poziom);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return ParametryNapisuWprowadzeniaTekstu(liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_dodatni_poziom);
end;
end;
return nil;
end;
function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local linki=function(zawartosc)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="LINKW")or(obiekt=="LINKZ"))then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
elseif(obiekt=="SZABLON")then
local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])
)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$");
return szablon,obiekt,kod,dalszy_tekst;
end;
end);
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
if(obiekt=="SZABLON")then
local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
local czy_numer_parametru_naglowka=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu];
local zawartosc;
if(not czy_numer_parametru_naglowka)then
czy_numer_parametru_naglowka=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(not czy_numer_parametru_naglowka)then return nil;end;
local zawartosc_szablonu=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc_szablonu)then return nil;end;
zawartosc_szablonu=mw.text.trim(zawartosc_szablonu);
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(zawartosc_szablonu);
if((not naglowek)or(not poziom_naglowka))then return nil;end;
zawartosc=naglowek;
else
zawartosc=tabela_parametrow_szablonu[czy_numer_parametru_naglowka];
if(not zawartosc)then return nil;end;
end;
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end);
return szablon,obiekt,kod;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then
local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc);
if((szablon)and(obiekt)and(kod))then
return szablon,obiekt,kod,dalszy_tekst;
end;
return nil;
end;
end;
return nil;
end;
end;
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1);
if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$"))
or(mw.ustring.match(str,"^[%*#:;<>]+.*$")
or(mw.ustring.match(str,"^[%s%p%w]*$")))
)then return nil;end;
local ile_punktowanych=0;
local szablonowe_modul=require("Module:Szablonowe");
local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then
ile_punktowanych=ile_punktowanych+1;
else
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then
ile_punktowanych=ile_punktowanych+1;
break;
end;
end;
end;
end);
if(ile_punktowanych>=ile)then
return nil;
end;
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
if(czy_zeruj)then
tab_zmienne.liczba_nie_okladka_artykul=nil;
tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil;
tab_zmienne.czy_ten_rozdzial=nil;
--tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,}
end;
return true;
end;
end;
return nil;
end;
end;
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)
local odtylu=liczba_obiekt_start_spac_par;
local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka;
local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej;
local czy_fun=false;
local czy_pierwszy=nil;
local liczba_koniec_naglowek_poczt=nil;
local szablonowe_modul=require("Module:Szablonowe");
while(true)do
local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe;
if(czy_dodatni==1)then
local _;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
elseif(czy_dodatni==2)then
local str_lista_naglowek;
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil;
else
liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil;
end;
if(not liczba_start_naglowek_nowe)then
break;
else
poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe;
local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
if(czy_tak_spisowe)then
if(not czy_pierwszy)then
liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe;
czy_pierwszy=true;
end;
if(liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then
if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then
local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
and(((czy_dodatni==1)
and(
((poziom_naglowka_nowe)and(not poziom_naglowka))
or(
((poziom_naglowka_nowe)and(poziom_naglowka))
and(poziom_naglowka_nowe>=poziom_naglowka)
)
)
or(
((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka))
or((czy_dodatni~=1)and(czy_dodatni~=2))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then
liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
break;
end;
end;
if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe);
if(not spis_tresci)then
--local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe);
if(czy_wynik)then return false;end;
end;
czy_fun=true;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe;
end;
end;
odtylu=liczba_start_naglowek_nowe;
end;
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
end
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe);
----
if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end;
----
local str_spacja_lub_zerowy_naglowek=function(tekst)
local ile_znalezione_linie_wedlug_wzoru=0;
local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia)
if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then
ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1;
end;
return nil;
end);
if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end;
return nil;
end;
if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then
local liczba_szukaj_odtylu_tekst=liczba_start_naglowek;
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(not liczba_start_rozdzial)then
while(true)do
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek);
if(not str_spacja_lub_zerowy_naglowek(str))then
break;
end;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
if(not liczba_start_naglowek_temp)then break;end;
end;
end;
elseif(not liczba_start_naglowek)then
local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_naglowek_temp)then
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści")
local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then
----
local tak=false;
local czy_w_petli=false;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
czy_w_petli=true;
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
if(numer_rodzaju_artykulu==1)then
tak=true;
break;
end;
end;
end;
end;
if((tak)or(not czy_w_petli))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0;
end;
end;
else
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
liczba_obiekt_start_kolei_par=liczba_start_naglowek;
end;
end;
local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil);
if(liczba_start_naglowek_temp)then
if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1);
if(mw.ustring.match(str,"^%s*$"))then
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
else
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp;
end;
end;
end;
end;
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
end;
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)
local liczba_spac=0;
if(liczba_start)then
local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia;
while(true)do
local liczba_start_tekst_stare=liczba_start_tekst;
linia=nil
local liczba_szukaj_odtylu_tekst=liczba_start_tekst;
liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^\n]*)",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil;
if(rozdzial_dodatki)then
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac;
end;
end;
local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil;
if(spacja)then
liczba_spac=liczba_spac+liczba_koniec_tekst-liczba_start_tekst+1;
elseif((not spacja)and(linia))then
local czy_spis=nil;
local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true);
local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil;
local czy_rozdzial_dwukropkowy;
if(not spis_tresci)then
liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
if(liczba_start_rozdzial)then
liczba_start=liczba_start_rozdzial;
else
czy_rozdzial_dwukropkowy=mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$");
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
end;
czy_spis=liczba_start_rozdzial and true or nil;
else
liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]];
czy_spis=true;
end;
if(not liczba_start_rozdzial)then
if(not spis_tresci)then
local szablonowe_modul=require("Module:Szablonowe");
if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then
local tak=false;
local czy_okladka=nil;
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and(not czy_okladka))then
tak=true;
break;
end;
end;
end;
liczba_start=tak and liczba_start_tekst or liczba_start;
czy_spis=((czy_rozdzial_dwukropkowy)and(not tak))and true or nil;
else
liczba_start=czy_rozdzial_dwukropkowy and liczba_start_tekst or liczba_koniec_tekst;
czy_spis=czy_rozdzial_dwukropkowy and true or nil;
end;
else
liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]];
end;
end;
return liczba_start,liczba_spac,czy_spis;
elseif(not liczba_start_tekst)then
return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil;
end;
end;
end;
return liczba_start,liczba_spac,nil;
end;
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_nieoddzielone,czy_wszystkie_linki)
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
----
----
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
else
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon;
for szablon,obiekt,kod in iterator do
local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_znajdz)then
local czy_tekst=czy_nieoddzielone or mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod));
if(czy_tekst)then
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu)and((czy_wszystkie_linki)or((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then
return true;
end;
end;
else
return false;
end;
szablon_obiekt_temp,szablon_kod_temp=obiekt,kod;
end;
end;
return false;
end;
end;
function p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
local liczba_linki_nierozdzialowe_szablonu,_,linia,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
---
if((liczba_linki_nierozdzialowe_szablonu)
and(
(przed_tekst=="")
or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$"))
)
)then
liczba_spisu=liczba_linki_nierozdzialowe_szablonu;
if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
----
local czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,false);
if(czy_znalezione)then return liczba_linki_nierozdzialowe_szablonu,true;end;
return liczba_spisowa,false;
end;
else
return liczba_spisowa,false;
end;
end;
end;
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)
local liczba_start=liczba_przed_rozdzialem;
local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul);
if(czy_spis)then
liczba_start=liczba_start_sugerowane;
return liczba_start,true;
elseif(not czy_znajdz)then
liczba_start=liczba_przed_rozdzialem;
return liczba_start,true;
end;
if(liczba_start_sugerowane<liczba_start-liczba_spac)then
if((not liczba_start_naglowek_przed)or(liczba_start_sugerowane>liczba_start_naglowek_przed))then
liczba_start=liczba_start_sugerowane;
local liczba_start_od_tylu=liczba_start;
local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true);
if(liczba_start_nowa)then
if((not liczba_start_naglowek_przed)or(liczba_start_nowa>liczba_start_naglowek_przed))then
liczba_start=liczba_start_nowa;
end;
else
liczba_start=liczba_start_sugerowane;
end;
end;
else
liczba_start=liczba_start_sugerowane;
end;
return liczba_start,false;
end;
function p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
while(true)do
local poczatek_nierozdzalowe=liczba_obiekt_koniec;
local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false)
if(liczba_start_nieszablon_nielink_nierozdzialowa)then
local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$");
if(rozdzial_dodatki)then
local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki);
if(naglowek)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
end;
end;
local czy_spacje=mw.ustring.match(linia,"^%s*$");
if(not czy_spacje)then
liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa;
return liczba_koniec;
elseif(czy_spacje)then
liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa;
end;
else
liczba_koniec=#tekst_rozwiniety_calego_artykulu;
return liczba_koniec;
end;
end;
return liczba_koniec;
end;
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
local szablonowe_modul=require("Module:Szablonowe");
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true);
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local obiekt="SZABLON";
local kod=kod_szablon and tonumber(kod_szablon) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
----
local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
end);
if(liczba_koniec_szablon)then
return liczba_koniec_szablon,norma_wzoru;
end;
elseif(not liczba_start_szablon)then
return nil;
end;
end;
end;
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local tak=nil;
local techniczne_modul=require("Module:Techniczne");
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek)
naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek);
if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then
return true;
end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not liczba_rozdzial_start)then
liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)then tak=true;end;
end;
if(liczba_rozdzial_start)then
local liczba_rozdzial_start2,liczba_rozdzial_koniec2;
if(not tak)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
else
local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then
if(liczba_rozdzial_start3<liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
end;
elseif(liczba_rozdzial_start3)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3;
elseif(liczba_rozdzial_start4)then
liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4;
else
liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil;
end;
end;
-----
local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst));
if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end;
local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec);
local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or "";
-----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia)
local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$");
if((obiekt)and(kod)and(dalszy_tekst))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then
return linia;
end;
end;
linia=dalszy_tekst or linia;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if(czy_element_spisu)then
return linia;
elseif(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then
return linia;
else
return "";
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return "";
end);
return wynik;
end;
end;
end;
return "";
end);
tekst=tekst1..str_bibliografia..tekst2;
end;
return tekst;
end;
function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end;
----
local liczba_start=nil;local liczba_koniec=nil;
----
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
-----
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu();
----
local liczba_obiekt_koniec=1;
local liczba_pierwszy_rozdzialowy_artykul=nil;
local liczba_nie_okladka_artykul=nil;
local tab_nazwa_spisow_przekierowaniowych={};
local liczba_start_rozdzial=1;
local liczba_obiekt_start_poprz=nil;
local liczba_obiekt_koniec_poprz=nil;
local liczba_nie_okladka_artykul_koniec=nil;
local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*";
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false);
if(liczba_start_szablon)then
liczba_obiekt_koniec=liczba_koniec_szablon;
--local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local czy_rozdzial_dodatni;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=((czy_dobry_obiekt)and(
(
(lista_szablon~="")and(
(przerwa_szablon=="")
or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))
or(not mw.ustring.match(lista_szablon,"^:"))
)
)
or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>")))
));
czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((not czy_element_spisu)or(czy_okladka))then
local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu)
local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp;
local tak=false;
for obiekt,kod in iterator do
if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then
kod=tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true);
if((czy_element_spisu_temp)and(not czy_okladka_temp))then
if(numer_rodzaju_artykulu_temp==1)then
tak=true;
break;
end;
end;
end;
end;
if(tak)then
czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp;
end;
end;
liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul;
liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul;
liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec;
----
if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then
local czy_bez_naglowka=nil;
local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start;
local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec;
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=nil,nil,nil,nil;
local czy_ten_rozdzial=true;
local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe;
local liczba_spis_tresci_start,liczba_spis_tresci_koniec,spis_naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek)
if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end;
end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local czy_zeruj=(not liczba_spis_tresci_start)and true or false;
liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe;
local tab_zmienne={
liczba_nie_okladka_artykul=liczba_nie_okladka_artykul,
liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul,
czy_ten_rozdzial=czy_ten_rozdzial,
};
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
if(not czy_ten_rozdzial)then
if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then
liczba_start_rozdzial=liczba_obiekt_start_nowe_temp;
liczba_obiekt_start_nowe=liczba_obiekt_start;
czy_ten_rozdzial=true;
tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial;
liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych));
liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial;
end;
end;
---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy;
liczba_start_naglowek=(
(not liczba_spis_tresci_start)
or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany;
-- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni;
or((poziom_naglowka_start)and(poziom_naglowka))and(
((poziom_naglowka_start>0)and(poziom_naglowka<=0))
or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka))
or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka))
)
) and liczba_spis_tresci_start
or liczba_start_naglowek;
----
if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then
----
czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false;
----
if(liczba_start_naglowek)then
local liczba_przed_rozdzialem;local czy_znajdz;
liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek);
local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek;
local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local liczba_przed=((liczba_start_naglowek_przed)and((liczba_przed_rozdzialem>=liczba_start_naglowek_przed)and liczba_przed_rozdzialem or liczba_spis_tresci) or liczba_przed_rozdzialem);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed,liczba_start_naglowek_przed,czy_znajdz);
if(czy_break)then break;end;
else
local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe)
if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then
local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1);
str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),"");
if(not mw.ustring.match(str,"^%s*$"))then
return true;
end;
end;
return nil;
end);
if(liczba_start_naglowek)then
liczba_obiekt_start_nowe=liczba_start_naglowek;
end;
--[[]]
local liczba_przed_rozdzialem,czy_znajdz=p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe);
local czy_break;
liczba_start,czy_break=p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,nil,czy_znajdz);
if(czy_break)then break;end;
end;
break;
else
liczba_start_rozdzial=liczba_obiekt_koniec_nowe;
liczba_nie_okladka_artykul_koniec=nil;
end;
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
else
liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz;
end;
end;
else
break;
end;
end;
if(not liczba_start)then return "";end;
local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_start_szablon,liczba_koniec_szablon,linia,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*))",liczba_obiekt_start_od_tylu,liczba_start,true);
----
if(liczba_start_szablon)then
liczba_obiekt_start_od_tylu=liczba_start_szablon;
local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"));
local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon=="")));
local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$"))));
local szablon;
if(not czy_listy)then
local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil;
szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(szablon)then czy_listy=true;end;
end;
if(czy_listy)then
local liczba_obiekt_koniec=liczba_koniec_szablon;
local liczba_obiekt_start=liczba_start_szablon;
local obiekt=obiekt_szablon;
local kod=kod_szablon;
kod=tonumber(kod) or nil;
local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local czy_znalezione=nil;
if(liczba_start<=liczba_obiekt_start)then
czy_znalezione=p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,linia,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true);
end;
if(czy_znalezione)then
liczba_koniec=p.PoliczKoniecZakodowanegoTekstuArtykularnego(tekst_rozwiniety_calego_artykulu,liczba_obiekt_koniec,liczba_koniec);
break;
end;
end;
else
break;
end;
end;
if(liczba_koniec)then
local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu;
while(true)do
local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then
koniec_dodatnie_rozdzialy=liczba_rozdzial_start;
local czy_znalazles_linki=p.SzukajObiektuArtykularnegoWeElemencieTekstowym(rozdzial,szablon_normy_kodowania_szablonu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true,true,true);
if(czy_znalazles_linki)then liczba_koniec=liczba_rozdzial_koniec;end;
else
break;
end;
end;
end;
if(not liczba_koniec)then return "";end;
if(liczba_start>=liczba_koniec)then return "";end;
--- Licencja ----
local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then
liczba_koniec=licencja_koniec;
end;
-----
local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
-----
for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do
tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
end;
--mw.log(tekst)
--- Licencja ----
--mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa)
--mw.log("TYTAN1",tekst,"TYTAN2")
--return nil;
--local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
qpgilri9h4ep9zt1lcpcjbl4z6zwg07
Wikibooks:Moduły
4
60758
557695
553941
2026-09-26T23:54:57Z
Persino
2851
/* Parametry */
557695
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogąca być uruchamiana w postaci ramki, ale nie tylko, bo również jako funkcja biblioteczna, a o to:
{{OpisParametrów
| 1 = {{P|Jeżeli {{ZobaczTeż|frame_tablica_ramki_parametry}} funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry szukane parametry, a jeżeli nie, to według {{Code|frame}}, a jeśli {{Code|frame}} nie jest tabelką, tylko tekstem, to to zwraca jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}, a ta funkcja w takim przypadku raz wyszukuje ten argument, ale wtedy musi być podany parametr {{Parametr|wyspecjalizowana|tak}}, gdy mamy zmienną {{Code|frame.args}}, a jeżeli ten argument nie został podany z wartością niepustą, wtedy są wyszukiwane elementy z {{Code|frame:getParent().args}}.}}
{{P|Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co pierwszy argument ramki, według tabelki, najczęściej jest to {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądż {{Code|url}}.}} | komórka1 = tak
| 2 = Kolejność {{ZobaczTeż|ważność_parametrów_ramki}} ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawionow tabelce pod definicją skrótową funkcji. | komórka2 = tak
}}
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
62ydlyaw8tuq3jyjpolubbvnvf92ajv
557698
557695
2026-09-27T00:27:24Z
Persino
2851
ionym
557698
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
{{OpisParametrów
| 1 = Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka: | nagłówek1 = tak
| 2 = Jeżeli funkcja znalazła tablicę ramki {{Code|frame.args}}, to wyszukuje w niej parametry parametry o kluczach podane w tabelkach, a jeżeli nie, to tak same ale w tabelce, według {{Code|frame}}. | komórka2 = tak
| 3 = Parametry rodzica przy nieustawionym niepustym parametrze: {{Parametr|wyspecjalizowana|tak}}, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu): |nagłówek3 = tak
| 4 = Podobnie jak w punkcie pierwszym, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}} | komórka4 = tak
| 5 = Gdy ramka jest jednak łańcuchem znakowym: | nagłówek5 = tak
| 6 = Zwracana jej zawartość tylko za pierwszym razem, a za drugim razem już {{Code|nil}}. | komórka6 = tak
| 7 = Parametry o kluczach w ramkach w dwóch możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu: | nagłówek7 = tak
| 8 = Parametry ramki funkcji tablicy transportu lub tablicy, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}, w funkcjach. | komórka8 = tak
| 9 = Ważność parametrów: | nagłówek9 = tak
| 10 = Kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, są w kolejności, w jakim te one przedstawiono w tabelce pod definicją skrótową funkcji, na wypadek, gdyby: {{Code|frame}},było łańcuchem znakowym. | komórka10 = tak
}}
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
ljvqzvyf3cp938r88sugjvn0oriqntv
557702
557698
2026-09-27T01:06:55Z
Persino
2851
/* Parametry */
557702
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}}.
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
skoegei8cer9gyxd9e5fffvgzor1jfn
557703
557702
2026-09-27T01:07:59Z
Persino
2851
/* Parametry */
557703
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}}.
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
a5mp8azp5wzcwn8uvp0cd6h1v1qndz3
557704
557703
2026-09-27T01:14:13Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557704
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz opis funkcji parametrów są opisane na stronie: {{sr|Parametry|p=Parametry/Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}}.
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
awzjcwsxf7wbbkmx61lc5n2sahon5qg
557705
557704
2026-09-27T01:15:55Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557705
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz opis funkcji parametrów są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}}.
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
1vul6btry35oezvod1fpebrv45266mb
557706
557705
2026-09-27T01:16:34Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557706
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}}.
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
e97148mlpp8p77g9ku041o6mjwm6099
557707
557706
2026-09-27T01:19:19Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557707
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}}.
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim są te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym. Te ważności są przedstawione w tabelce według odpowiedniej kolejności.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
qa0tvtqa7qfe022s739s9qhx1at77pg
557708
557707
2026-09-27T01:20:15Z
Persino
2851
/* Parametry */
557708
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}} ({{LzLua|frame:getParent}}.
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim są te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym. Te ważności są przedstawione w tabelce według odpowiedniej kolejności.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
f7n0s71kpdcysaoeideq0v4i64mq24q
557709
557708
2026-09-27T01:20:32Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557709
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}} ({{LzLua|frame:getParent}}).
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim są te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym. Te ważności są przedstawione w tabelce według odpowiedniej kolejności.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
2nb9w3m0b80571mdgf5z97m7n5n6lqc
557712
557709
2026-09-27T01:41:59Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557712
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}} ({{LzLua|frame:getParent}}).
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim są te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym. Te ważności są przedstawione w tabelce według odpowiedniej kolejności.
W przypadek ważności parametrów przedstawia kod:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
</syntaxhighlight>
Widzimy, że najpierw brana jest zmienna {{Code|url}}, a jeżeli ona nie istnieje, to {{Code|1}}, a jeżeli oba istnieją, to ta pierwsza.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
3ccl6fc3ngbfvvakg5tmib8wre0y5di
557713
557712
2026-09-27T01:45:00Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557713
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}} ({{LzLua|frame:getParent}}).
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim są te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym. Te ważności są przedstawione w tabelkach: {{s|OpisParametrów}}, według odpowiedniej kolejności, przy opisie danej funkcji.
W przypadek ważności parametrów przedstawia kod:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
</syntaxhighlight>
Widzimy, że najpierw brana jest zmienna {{Code|url}}, a jeżeli ona nie istnieje, to {{Code|1}}, a jeżeli oba istnieją, to ta pierwsza.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
87y7o3urb3t6jxvlr2qvac30kevbcca
557714
557713
2026-09-27T01:46:20Z
Persino
2851
/* Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji */
557714
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji - ważność parametrów ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}} ({{LzLua|frame:getParent}}).
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim są te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym. Te ważności są przedstawione w tabelkach: {{s|OpisParametrów}}, według odpowiedniej kolejności, przy opisie danej funkcji.
W przypadek ważności parametrów przedstawia kod:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
</syntaxhighlight>
Widzimy, że najpierw brana jest zmienna {{Code|url}}, a jeżeli ona nie istnieje, to {{Code|1}}, a jeżeli oba istnieją, to ta pierwsza.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
sbz164r8zcefygtlvaj5oiphl3zuvbx
557747
557714
2026-09-27T08:35:34Z
Persino
2851
/* Spis treści */
557747
wikitext
text/x-wiki
<noinclude><!--
-->{{StandardowaStronaStart
| nagłówek = {{Rozdział|Pomoc Wikibooks|Mechanizm MediaWiki - Moduły}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Rozdział|Koniec}}
}}</noinclude>{{Spis treści|limit=3}}
{{Dopracować|język|styl|wikikod|format|Po ukończeniu opisu wszystkich modułów zostanie sprawdzona jego merytoryczna poprawność.}}
Strona zawiera opis technologii, programowania pomocniczego wikikodu i poszczególnych modułów, bez jego pod. To jest ogólny spis i opis wszystkich podstawowych, i nie tylko, modułów, a w poszczególnych podmodułach, ewentualnie, możemy wejść do dalszych spisów, tzn. do ich, tzw. tomów, itp., lub do bezpośredniego opisu poszczególnych funkcji.
== Technologia modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ==
Przedstawimy tu technologię programowania języka pomocniczego wikikodu '''Mechanizmu MediaWiki'''.
=== Wywołania ===
Parametry podobnie się pisze w wikikodzie i wywołuje jak szablony, tylko z tą różnicą, że w nazwie szablonu jest na samym początku: {{Code|#invoke:}}, co po nim następuje w niej nazwa modułu bez przedrostka {{Code|{{Np|Module|link=tak}}:}}, a pierwszy parametr, który nie jest liczony, jako zmienna, tylko następna z kolei, jest nazwą funkcji w tablicy eksportu. Wtedy jest wywoływany moduł, a w niej ściśle określona funkcja z parametrami jej ramki. Parametrami funkcji też mogą być parametry szablonu rodzica, w której wywoływana jest ta ona.
=== Parametry ===
Moduły wywoływa się przez, np. formę: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''}}}}, lub przez: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1|Parametr 2|...}}}}, albo: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|Parametr 1 {{=}} Wartość 1|Parametr 2 {{=}} Wartość 2|...}}}}, lub w postaci mieszanej: {{Tt|{{m|'''Nazwa modułu'''|'''Nazwa funkcji'''|...|Parametr n {{=}} Wartość n|...|Parametr m|...}}}}, itp..
Schemat {{ZobaczTeż|schemat parametrów funkcji}} przedstawiania parametrów w zmiennej: {{Code|frame}}, w funkcjach, w dokumentacji, mogące być uruchamiane w postaci ramki, ale nie tylko, bo również jako funkcje biblioteczne, a ten parametr może być tablicą, albo łańcuchem znakowym, wytłumaczenie:
==== Możliwości wyszukiwania w sposób ogólny na przeróżne sposoby parametrów w jednej funkcji - ważność parametrów ====
Patrz: opis funkcji parametrów, one są opisane na stronie: {{sr|Parametry/Tom XIV|Funkcje parametrów - Tom XIV}}, najczęściej używana funkcja stamtąd jest: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, a oto jej streszczenie:
; Parametry podane w tabelce ramki{{dk}}
* Jeżeli jest uruchomiony parametr w ramce dziecka: {{Parametr|wyspecjalizowana|tak}}, wtedy są wyszukiwane parametry dziecka:
** Jeżeli funkcja znalazła tablicę argumentów ramki: {{Code|frame.args}}, to wyszukuje w niej parametry o kluczach podanych w opisie parametrów.
* Parametry rodzica przy nieustawionym niepustym parametrze wyspecjalizowania, w ramce dziecka, wtedy są wyszukiwane parametry rodzica (szablonu):
** Podobnie, jak dla dziecka, parametry są wyszukiwane, ale już w tablicy: {{Code|frame:getParent().args}} ({{LzLua|frame:getParent}}).
* Lub te same tak, ale w tabelce, według {{Code|frame}}.
; Parametr będący łańcuchem znakowym{{dk}}
* Gdy ramka jest jednak łańcuchem znakowym, zwracana jej zawartość tylko za pierwszym razem, przy pierwszym parametrze, a przy drugim razem, już: {{Code|nil}}.
; Klucze parametrów lub gdy {{Code|frame}} będzie łańcuchem znakowym{{dk}}
* Nazwy parametrów są o kluczach w ramkach w trzech możliwych tablicach parametrów, funkcji w ramce: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, lub szablonu, albo w zwykłej tablicy, są takie same.
* Parametry ramki funkcji w tych możliwych przedstawieniach, najczęściej są o kluczach: {{Code|tekst}}, {{Code|html}}, czy {{Code|1}}, bądź {{Code|url}}.
* Ważność parametrów, czyli kolejność ważności parametrów ramki jest, w jakiej kolejności są brane parametry, na wypadek, gdyby dwie, lub więcej, zmienne oznaczały to samo, w jakim są te one przedstawione, albo na wypadek, gdyby: {{Code|frame}}, było łańcuchem znakowym. Te ważności są przedstawione w tabelkach: {{s|OpisParametrów}}, według odpowiedniej kolejności, przy opisie danej funkcji.
W przypadek ważności parametrów przedstawia kod:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local url=PobierzParametr("url") or PobierzParametr(1);
</syntaxhighlight>
Widzimy, że najpierw brana jest zmienna {{Code|url}}, a jeżeli ona nie istnieje, to {{Code|1}}, a jeżeli oba istnieją, to ta pierwsza.
== Spis treści ==
{{Osobny artykuł|Wikibooks:Mechanizm MediaWiki|obserwowane=Mechanizmy MediaWiki}}
{{Kolumny|2|2=
=== Moduły podstawowe ===
* {{lru|Moduły/Parametry}}{{r|Spis treści}} - na operacjach z parametrami funkcji języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
* {{lru|Moduły/Html}} - na operacjach specjalnych z tekstami zawierający znaki HTML i na adresach URL.
* {{lru|Moduły/Nazwy}}{{r|Spis treści}} - operujących na nazwach MediaWiki projektu.
* {{lru|Moduły/Książkowe}} - na nazwach zawierający specjalne znaki HTML i też odkodowanie ich z nich.
* {{lru|Moduły/Pudełko}}{{r|Spis treści}} - opakowanych wewnątrz wikikodu w szablony, którego wynikiem są różne nazwy.
* {{lru|Moduły/Ramka}} - ramkowanych, w ramach których są wykonywane pewne operacje.
* {{lru|Moduły/Specjalne}} - do specjalnych zastosowań operacji na obiektach.
* {{lru|Moduły/StronicowyParser}}{{r|Spis treści}} - stronicowego parsera do numeracji obiektów i odniesień do nich, także operowanie na tak zebranych danych.
* {{lru|Moduły/Szeregi}} - do obsługi na tekstach i kolejnych liniach w tekście, a także do wyszukań tam elementów spełniające pewne kryteria funkcyjne.
* {{lru|Moduły/Szablonowe}} - służących do parsowania tekstu nawet z podanych stron.
* {{lru|Moduły/Techniczne}} - do operacji technicznych na tekście.
* {{lru|Moduły/Wiki}} - robiący czynności na obiektach wikidanych.
=== Moduły standardowe ===
* {{lru|Moduły/Kategorie}} - operujących na kategoriach (w przestrzeni {{Np|Category|link=tak}}) lub z tekstem ze zgłoszonymi tymi kategoriami.
* {{lru|Moduły/Linki}} - obsługujących różnego rodzaju linki.
* {{lru|Moduły/Łatki}} - łatające braki w mechanizmie MediaWiki.
* {{lru|Moduły/Skrót}} - łatające szablony: {{s|Kategoria}} i {{s|Kategorie}}, do wywołań w innych szablonach.
* {{lru|Moduły/Strony}} - funkcje do użytku przez walidator: {{Code|{{m|Sprawdź|Parametry}}}}.
* {{lru|Moduły/Sprawdź}} - oferujące sprawdzanie danych uzyskanych ze strony.
* {{lru|Moduły/ŹródłoLua}} - wyświetlające w całości wyniki w postaci różnych typów danych wraz z ich zmiennymi.
=== Specjalistyczne ===
* {{lru|Moduły/Tabela}} - tworzące wiki-tabelę ze sprawdzeniem rodzaju parametrów.
* {{lru|Moduły/Sekcja referencyjna}} - linków inteligentnych sekcji referencyjnej używanej z podaniem nazwy artykułu bez nazwy książki.
* {{lru|Moduły/Licencja}} - wyświetlania licencji książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Przypisy}} - wyświetlania przypisów artykułów lub książki z określonym oczekiwanym lub nie nagłówkiem.
* {{lru|Moduły/Dopracować}} - wyświetlania okienka {{s|mbox}} z komunikatem, w zależności od problemu.
}}
== Przypisy ==
{{Przypisy
|{{o|n=Spis treści|o=Opisy modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}} mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' posiadające na ich podstronach swój '''{{lpg|spis treści}}'''.}}
}}
{{BrClear}}
<noinclude><!--
-->{{StandardowaStronaKoniec}}<!--
-->{{Kategorie
| Opisy funkcji, w Lua w Scribunto, w modułach | sortuj spacją 1 = tak
| Pomoc - Problemy wywołań mechanizmu MediaWiki
}}<!--
--></noinclude>
hopwpl53g6ubtpp0almmddvynl2bp0n
Moduł:Kategorie/dane
828
61693
557671
553525
2026-09-26T16:32:56Z
Persino
2851
557671
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
};
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
["TemplateStyles"]=true,
["Lua"]=true,
["Scribunto"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
sj91k2ort1ohs649c7qk8ojc1wp7gk5
557672
557671
2026-09-26T16:34:19Z
Persino
2851
557672
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
};
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
8ohmzf1lbm20yo4u9uc1v1wcph14amt
557676
557672
2026-09-26T17:17:10Z
Persino
2851
557676
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
["przez"]=true,
};
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
qyuzcsfp5aij52ifrpw4rjta3dgiuai
557677
557676
2026-09-26T17:18:35Z
Persino
2851
557677
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
["przez"]=true,
};
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
["przez"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
7cne6pipgkjozc2bv74t8cdvvuykqhy
557678
557677
2026-09-26T17:24:18Z
Persino
2851
557678
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
["przez"]=true,
};
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
["przez"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowania_bez_serwisy={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
nmrvujvsgjswk805dyvi2m6gxukamu3
557682
557678
2026-09-26T17:42:55Z
Persino
2851
557682
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
};
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
["przez"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowania_bez_serwisy={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
63wygmzu8x7tvd49xkvsepk8d0972ca
557688
557682
2026-09-26T19:31:18Z
Persino
2851
557688
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
};
p.tablica_wyrazowa_jakich={
["jak"]=true,
["któr"]=true,
}
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
["przez"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowania_bez_serwisy={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
046g7tfcw8oacdjzrb8tnyu5428o7zt
557690
557688
2026-09-26T19:38:54Z
Persino
2851
557690
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
};
p.tablica_wyrazowa_jakich={
["jak"]=true,
["któr"]=true,
}
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
["przez"]=true,
["gdzie"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowania_bez_serwisy={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
nakvrwybajvkpqlsgmteqjuj7g75vkp
557691
557690
2026-09-26T19:40:17Z
Persino
2851
557691
Scribunto
text/plain
-- Zmienne potrzebne do funkcji: p.NazwaSortowaniaNazwyStrony(frame), która jest wykorzystywana do domyślnego formatowania stron do szablonów: "Kategoria" i "Kategorie", i ich pochodnych, które korzystają z funkcji o takich samych nazwach, co te szablony.
local p={};
p.tablica_wyrazowa_alternatyw={
["i"]=true,
["lub"]=true,
["oraz"]=true,
["bądź"]=true,
["ewentualnie"]=true,
["natomiast"]=true,
};
p.tablica_wyrazowa_gdy_alternatywy={
["szablon"]=true,
};
p.tablica_wyrazowa_niealternatyw={
["o"]=true,
["w"]=true,
["z"]=true,
["ze"]=true,
["od"]=true,
["ode"]=true,
["do"]=true,
["dla"]=true,
["na"]=true,
["pod"]=true,
["nad"]=true,
["znad"]=true,
["spod"]=true,
["stamtąd"]=true,
["podnad"]=true,
["bez"]=true,
["nie"]=true,
["tak"]=true,
["brak"]=true,
["spoza"]=true,
};
p.tablica_wyrazowa_jakich={
["jak"]=true,
["któr"]=true,
}
p.tablica_wyrazowa_wybrane_przyimki={
["o"]=true,
["z"]=true,
["ze"]=true,
["w"]=true,
["na"]=true,
["do"]=true,
["bez"]=true,
["od"]=true,
["przez"]=true,
["gdzie"]=true,
};
p.tablica_charakterystycznych_przedrostowych={
["wiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne={
["infobox"]=true,
["wikibooks"]=true,
["mediawiki"]=true,
};
p.tablica_wyrazy_niedopuszczalne_prefiks={
};
p.tablica_analizowanie_bez={
["TemplateStyles"]=true,
["Scribunto"]=true,
["String"]=true,
["Dump"]=true,
["Wikidan"]=true,
["Opis"]=true,
};
p.tablica_analizowania_bez_program={
["Lua"]=true,
["HTML"]=true,
["XHTML"]=true,
["CSS"]=true,
}
p.tablica_analizowania_bez_serwisy={
["Wikibooks"]=true,
["MediaWiki"]=true,
["Commons"]=true,
["Meta"]=true,
}
p.tablica_analizowanie_specjalne_wyrazy={
["błędam"]=true,
}
p.tablica_analizowanie_specjalne_sekwencje={
["błędn"]=true,
["błędy"]=true,
["nazwy"]=true,
};
p.tablica_wyrazy_do_usuwania_przez_sortowanie={
["używa"]=true,
["wymag"]=true,
["podział"]=true,
["taki"]=true,
["jaki"]=true,
["samy"]=true,
["któr"]=true,
["zwróc"]=true,
["przez"]=true,
["przestarz"]=true,
["postac"]=true,
["zawiera"]=true,
["zawar"]=true,
["byc"]=true,
["dotycz"]=true,
["duż"]=true,
["małośc"]=true,
["malut"]=true,
["liczb"]=true,
["musi"]=true,
["musz"]=true,
["zgłaszan"]=true,
["przekracz"]=true,
["dopuszcz"]=true,
["duż"]=true,
["prawidł"]=true,
["samozamykaj"]=true,
["zależ"]=true,
["wyświetl"]=true,
["inn"]=true,
["tej"]=true,
["tego"]=true,
["pełn"]=true,
["dawn"]=true,
--["definicj"]=true,
["główn"]=true,
["określon"]=true,
["poprawn"]=true,
["istniejąc"]=true,
["znan"]=true,
["zgodn"]=true,
["wszystk"]=true,
["sprawdzen"]=true,
["osobn"]=true,
["tworz"]=true,
["wywołan"]=true,
["wywołań"]=true,
["obsługując"]=true,
["wartość"]=true,
["pudełek"]=true,
["parametr"]=true,
["pozostał"]=true,
["użyc"]=true,
["szablonów"]=true,
["podano"]=true,
["złym"]=true,
["dobrym"]=true,
["brak"]=true,
["nazwanym"]=true,
["obiektam"]=true,
["pusty"]=true,
["puste"]=true,
["wykorzyst"]=true,
["potrzeb"]=true,
["korzystan"]=true,
["zbiorcz"]=true,
["powoduj"]=true,
["poszczególn"]=true,
["siostrzanym"]=true,
["przekroczon"]=true,
};
p.tablica_wyrazy_przez_sortowanie={
["brak"]=true,
["bez"]=true,
["spis"]=true,
["istniej"]=true,
["zobacz"]=true,
["grup"]=true,
};
p.tablica_wyrazy_parsowania_nazwy_sortowania={
["obiekt[^%s]*$"]=true,
};
p.tablica_zmiana_liczenia_nazwy_sortowania={
["odnośnik"]=true,
["bez"]=true,
};
p.tablica_dzielenia_elementowa_sortowania={
["miast"]=true,
["gmin"]=true,
["powiat"]=true,
["województw"]=true,
};
p.tablica_specjalne_wyrazy_sortowania={
["portal"]=true,
["poziom"]=true,
["status"]=true,
["temat"]=true,
};
p.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie={
["jest"]=true,
["może"]=true,
["można"]=true,
["być"]=true,
["zbyt"]=true,
["dane"]=true,
["się"]=true,
["szablon"]=true,
["według"]=true,
["mał[ayoe]"]=true,
["małość"]=true,
};
p.tablica_wydzielania_subelementowych={
["Link"]=true,
};
p.tablica_wydzielania_subelementowych_innych={
["Wiki"]=true,
["Multi%-?"]=true,
["Meta%-?"]=true,
};
p.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania={
["skrypty"]=true,
["hasła"]=true,
["książki"]=true,
["artykuły"]=true,
["podręczniki"]=true,
["artykuły dla dzieci"]=true,
["podręczniki dla dzieci"]=true,
["strony brudnopisu opisu modułów"]=true,
["strony brudnopisu opisu szablonów"]=true,
["strony brudnopisu modułów"]=true,
["strony brudnopisu szablonów"]=true,
["strony opisu modułów"]=true,
["strony opisu szablonów"]=true,
["strony modułów"]=true,
["strony szablonów"]=true,
["jednostki brudnopisu projektu"]=true,
["strony brudnopisu projektu"]=true,
["strony kategorii"]=true,
["strony pomocy"]=true,
["strony projektu"]=true,
["jednostki użytkowników"]=true,
["strony użytkowników"]=true,
["strony niepodręcznikowe"]=true,
};
return p;
2v3rbdok0xdgopp73p7mf463r45sfp5
Moduł:Kategorie/sortowanie
828
62837
557663
553523
2026-09-26T14:41:17Z
Persino
2851
557663
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local poczatek,koniec,_,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(((name=="z")or(name=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(z)%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(z)%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(ze)%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+(z)%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+(ze)%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(ze)%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(z)%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(ze)%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name~="z")and(name~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if(minimim_maksimum)then
local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2];
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
tlfhxoftf029qg5ejhb2dr7az9zhtmf
557665
557663
2026-09-26T15:20:36Z
Persino
2851
557665
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
name=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,_,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(((name=="z")or(name=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(z)%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(z)%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(ze)%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+(z)%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+(ze)%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(ze)%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(z)%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(ze)%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name~="z")and(name~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if(minimim_maksimum)then
local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2];
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
n4rfh2titfzvrxc78huodotq9qemot6
557666
557665
2026-09-26T15:25:46Z
Persino
2851
557666
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,_,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(((name=="z")or(name=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(z)%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(z)%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+(ze)%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+(z)%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+(ze)%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+(ze)%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(z)%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+(ze)%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name~="z")and(name~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if(minimim_maksimum)then
local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2];
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
hy33qyh895ia55oq4wdy7m5sjiyuorw
557667
557666
2026-09-26T15:35:15Z
Persino
2851
557667
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if(minimim_maksimum)then
local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2];
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
kh7ia9xdgsy5kewld8ptgyrend6o0gp
557668
557667
2026-09-26T16:00:05Z
Persino
2851
557668
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
local czy_poczatek=true;
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
mw.log(1)
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if(minimim_maksimum)then
local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2];
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
9leamxgcgw80gsgds8uyxeoeliaojva
557669
557668
2026-09-26T16:06:20Z
Persino
2851
557669
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
local czy_poczatek=true;
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
mw.log(1)
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
--break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if(minimim_maksimum)then
local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2];
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
r5058vinjx1xzm04aou0e7juumkvim3
557670
557669
2026-09-26T16:19:32Z
Persino
2851
557670
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
local czy_poczatek=true;local czy_skorzystales=false;
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
rip7p78sd4nxh7p5hgooc3w9blsdxim
557673
557670
2026-09-26T16:41:58Z
Persino
2851
557673
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
r8ri7ocwysgv16emae7cd8ffyfss5e1
557674
557673
2026-09-26T16:49:25Z
Persino
2851
557674
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
if(minimim_maksimum)then
local nazwa_sortowania_temp=tab_dane[minimim_maksimum][2];
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
g0gd5b92c77e3mmuo2ayyypdobbyd15
557675
557674
2026-09-26T17:09:09Z
Persino
2851
557675
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
cap1odve1b6qzj70j1oldgv203ls4gm
557679
557675
2026-09-26T17:29:32Z
Persino
2851
557679
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
neh6yh75ukt55mxxr7p8opbehdhwkt3
557680
557679
2026-09-26T17:33:28Z
Persino
2851
557680
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
12qviwlgsvpqm9guqdqj37foxrhkdw9
557681
557680
2026-09-26T17:35:41Z
Persino
2851
557681
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
pp0scnake76duz1mnkgt31iexnddl01
557683
557681
2026-09-26T17:58:07Z
Persino
2851
557683
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
arjpwln90e03fqorinpmurlab6mx4ue
557684
557683
2026-09-26T18:19:52Z
Persino
2851
557684
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
sjn13ldhqno4jqyf27v2db5c1es2tdu
557685
557684
2026-09-26T18:29:32Z
Persino
2851
557685
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
m24yi9otqrnctj11ey8c4bll1m8m1bw
557686
557685
2026-09-26T18:30:20Z
Persino
2851
Anulowano wersję [[Special:Diff/557685|557685]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
557686
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
sjn13ldhqno4jqyf27v2db5c1es2tdu
557687
557686
2026-09-26T18:58:24Z
Persino
2851
557687
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
3m77j84e4krh8hd8v6mdc4m3kkv3fh7
557689
557687
2026-09-26T19:36:01Z
Persino
2851
557689
Scribunto
text/plain
local p={};
function p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wydzielania_subelementowych=kategorie_dane_modul.tablica_wydzielania_subelementowych;
local ile;local ile_zastapien=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^(%a%l%l+)(%u+.*)$",function(wyraz,dalej)
if(tablica_wydzielania_subelementowych[wyraz])then
ile_zastapien=ile_zastapien+1;
return dalej;
end;
return nil;
end);
if((ile>0)and(ile_zastapien>0))then
return nazwa_sortowania,(ile-ile_zastapien);
end;
local tablica_wydzielania_subelementowych_innych=kategorie_dane_modul.tablica_wydzielania_subelementowych_innych;
for name,_ in pairs(tablica_wydzielania_subelementowych_innych)do
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^("..name..")(%a)","%2");
if(ile>0)then
return nazwa_sortowania,ile;
end;
end;
return nazwa_sortowania,0;
end;
local CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania=function(nazwa_sortowania)
local czy_tak=mw.ustring.match(nazwa_sortowania,"^[%c%s_%p]*$")
if(czy_tak)then return true;end;
return false;
end;
local UsuwanieElementuArtykularnegoWoluminu=function(nazwa_sortowania,nawias_lewy,nawias_prawy)
local ile_zmieniono=0;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%"..nawias_lewy.."[%p%s_]*([^%"..nawias_lewy.."%"..nawias_prawy.."]-)[%p%s_]*%"..nawias_prawy,function(wyrazenie)
if(wyrazenie=="")then return "";end;
if(tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania[wyrazenie])then
ile_zmieniono=ile_zmieniono+1;
return "";
end;
end);
return nazwa_sortowania,ile_zmieniono;
end;
local UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony=function(nazwa_sortowania)
repeat
local ile1;local ile2;local ile3;local ile4;local ile5;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%(([^%(%)]+)%)","%1");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%[([^%(%)]+)%]","%1");
nazwa_sortowania,ile3=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*%{([^%(%)]+)%}","%1");
nazwa_sortowania,ile4=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*\"([^%(%)]+)\"","%1");
nazwa_sortowania,ile5=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*„([^%(%)]+)”","%1");
local ile=ile1+ile2+ile3+ile4+ile5;
until (ile==0);
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]*","");
return nazwa_sortowania;
end;
local UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania=function(nazwa_sortowania,czy_koniec)
local czy_tak=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_tak)then return nazwa_sortowania,0;end;
local ile;
if(czy_koniec)then
local ile1;local ile2;
nazwa_sortowania,ile1=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile2=mw.ustring.gsub(nazwa_sortowania,"[%p%s_]+$","");
ile=ile1+ile2;
else
local UsuwanieNiepoprawnejInterpunkcjiNawiasowej=function(nazwa_sortowania,numer)
local ile;local ile_nawias;
repeat
if(numer==1)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"(",")");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%(([^%(%)]+)%)","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==2)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"[","]");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%[([^%[%]]+)%]","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==3)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"{","}");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)%{([^%{%}]+)%}","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==4)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"\"","\"");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)\"([^\"]+)\"","%1%2");
else
ile=ile_nawias;
end;
elseif(numer==5)then
nazwa_sortowania,ile_nawias=UsuwanieElementuArtykularnegoWoluminu(nazwa_sortowania,"„","”");
if(ile_nawias==0)then
nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,"^([%p%s_]*)„([^„”]+)”","%1%2");
else
ile=ile_nawias;
end;
else
mw.log("Funkcja: UsuwanieNiepoprawnejInterpunkcjiNawiasowej, niewłaściwa wartość parametru: numer.")
end;
until (ile==0);
return nazwa_sortowania,ile;
end;
local ile1;local ile2;local ile3;local ile4;local ile5;local ile6;local ile7;
nazwa_sortowania,ile1=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,1);
nazwa_sortowania,ile2=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,2);
nazwa_sortowania,ile3=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,3);
nazwa_sortowania,ile4=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,4);
nazwa_sortowania,ile5=UsuwanieNiepoprawnejInterpunkcjiNawiasowej(nazwa_sortowania,5);
nazwa_sortowania,ile6=mw.ustring.gsub(nazwa_sortowania,"^[%p%s_]+","");
nazwa_sortowania,ile7=mw.ustring.gsub(nazwa_sortowania,"[%s_]+$","");
ile=ile1+ile2+ile3+ile4+ile5+ile6+ile7;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,ile;
end;
local KorygowanieSekwencjiInterpunkciNazwySortowania=function(nazwa_sortowania)
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"(%.)([^%.])","%1 %2");
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"([%,%!%:%;])","%1 ");
return nazwa_sortowania;
end;
local ZamienianieWyrazoweSzereguWyrazu=function(nazwa_sortowania,wzor,funkcja,czy_wielkosc)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_dopasowania=0;
local nazwa,ile=mw.ustring.gsub(nazwa_sortowania,wzor,function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(not czy_wielkosc)then wyraz=mw.ustring.lower(wyraz);end;
local wynik=funkcja(wyraz);
if(wynik)then
ile_dopasowania=ile_dopasowania+1;
return nil;
end;
return nil;
end);
return nazwa,ile,ile_dopasowania;
end;
local ZamienianieWyrazoweSzereguWyrazuKompleksowe=function(nazwa_sortowania,wzor,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_wielkosc)
local ile;local ile_dopasowan;
local nazwa,ile,ile_dopasowan=ZamienianieWyrazoweSzereguWyrazu(nazwa_sortowania,wzor,function(wyraz)
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return true;
end;
end;
if(tablica_niekompletne_wyrazy)then
for name,_ in pairs(tablica_niekompletne_wyrazy)do
local czy_dopasowano=mw.ustring.match(wyraz,"^"..name)
if(czy_dopasowano)then
return true;
end;
end;
end;
return nil;
end,czy_wielkosc);
return nazwa,ile,ile_dopasowan;
end;
local UsuwaneElemementyNazwySortowania=function(nazwa_sortowania,tablica_kompletne_wyrazy,tablica_niekompletne_wyrazy,czy_nie,czy_od_poczatku)
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local ile_niezastapil=0;
local nazwa_sortowania,ile=mw.ustring.gsub(nazwa_sortowania,((czy_od_poczatku and "^" or "").."%s*(%S+)"),function(wyraz)
wyraz=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(wyraz,true);
if(mw.ustring.match(wyraz,"^%u+$"))then
ile_niezastapil=ile_niezastapil+1;
return nil;
end;
wyraz=mw.ustring.lower(wyraz);
if(tablica_kompletne_wyrazy)then
if(tablica_kompletne_wyrazy[wyraz])then
return "";
end;
end;
if(tablica_niekompletne_wyrazy)then
for p_wzor_wyrazy,_ in pairs(tablica_niekompletne_wyrazy)do
local p_wyraz=mw.ustring.match(wyraz,"^"..p_wzor_wyrazy)
or (czy_nie and mw.ustring.match(wyraz,"^nie"..p_wzor_wyrazy) or nil);
if(p_wyraz)then
return "";
end;
end;
end;
ile_niezastapil=ile_niezastapil+1;
return nil;
end);
ile=ile-ile_niezastapil;
return nazwa_sortowania,ile;
end;
local CzyPierwszyWyrazPrzezSortowanie=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_przez_sortowanie;
for name,value in pairs(tablica_wyrazy_przez_sortowanie) do
local czy_dopasowano=mw.ustring.match(nazwa_sortowania,"^"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst(name))
or mw.ustring.match(nazwa_sortowania,"^".."nie"..name)
or mw.ustring.match(nazwa_sortowania,"^"..mw.getContentLanguage():ucfirst("nie"..name));
if(czy_dopasowano)then
return true;
end;
end;
return false;
end;
local UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania=function(nazwa_sortowania)
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,1;end;
local nazwa_sortowania_stare=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania);
local czy_pusta_nazwa_sortowania=CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania);
if(czy_pusta_nazwa_sortowania)then
return nazwa_sortowania_stare,0;
end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_analizowanie_specjalne_sekwencje=kategorie_dane_modul.tablica_analizowanie_specjalne_sekwencje;
local _,_,ile_wyrazy_sekwencje=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",nil,tablica_analizowanie_specjalne_sekwencje);
if(ile_wyrazy_sekwencje>0)then
return nazwa_sortowania,0;
end;
nazwa_sortowania=mw.ustring.gsub(nazwa_sortowania,"^%s*([^/%s]+%s+)","");
local ile_wyrazy_niedopuszczalne=0;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
local _,_,ile_wyrazy_niedopuszczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_wyrazy_niedopuszczalne>0)then
nazwa_sortowania=nazwa_sortowania_stare;
end;
return nazwa_sortowania,ile_wyrazy_niedopuszczalne;
end;
local IleJestSpacjiNazwySortowania=function(nazwa_sortowania)
local _,ile=mw.ustring.gsub(nazwa_sortowania,"(%s)",function()return nil;end);
return ile;
end;
local function CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_parsowania)
local czy_tak=false;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"[%s%p]+"..name);
if(czy_tak)then return czy_tak;end;
end;
for name,value in pairs(tablica_parsowania)do
czy_tak=czy_tak or mw.ustring.match(nazwa_sortowania,"^"..name);
if(czy_tak)then return czy_tak;end;
end;
return false;
end;
local TekstPoPrzyimkuNazwySortowania=function(nazwa_sortowania)
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local tablica_zmiana_liczenia_nazwy_sortowania=kategorie_dane_modul.tablica_zmiana_liczenia_nazwy_sortowania;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local tablica_wyrazy_parsowania_nazwy_sortowania=kategorie_dane_modul.tablica_wyrazy_parsowania_nazwy_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_wyrazowa_jakich=kategorie_dane_modul.tablica_wyrazowa_jakich;
local tab_dane={};
local nie_usuwaj_pierwszego_z_kolei_wyrazu;
local czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka;
local tab_przyimki_po_kolei={};
local techniczne_modul=require("Module:Techniczne");
for name,value in pairs(tablica_wyrazowa_wybrane_przyimki)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+",1);
if(poczatek)then
tab_przyimki_po_kolei[poczatek]=name;
end;
end;
local parametry_modul=require("Module:Parametry");
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_przyimki_po_kolei);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_przyimki_po_kolei,__metatabelka);
local tab_przyimki={};local czy_poczatek=true; local czy_skorzystales=false;
for _,name in pairs(tab_przyimki_po_kolei)do
local name_wzor=techniczne_modul["WzórBezOdróżnianiaWielkościLiterNazwy"](name);
local poczatek,koniec,name_wyszukane,nazwa_sortowania_temp=mw.ustring.find(nazwa_sortowania,"%s+("..name_wzor..")%s+(%S.*)%s*$",1);
if(poczatek)then
if(czy_poczatek)then
if(poczatek>1)then
local przed_przyimkiem=mw.ustring.sub(nazwa_sortowania,1,poczatek);
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(przed_przyimkiem,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
if(ile_wyrazy_specialne>0)then
czy_skorzystales=true;
break;
end;
end;
czy_poczatek=false;
end;
name_wyszukane=mw.ustring.lower(name_wyszukane);
if(((name_wyszukane=="z")or(name_wyszukane=="ze"))and((not tab_przyimki["z"])and(not tab_przyimki["ze"])))then
local poczatek2,koniec2,_,nazwa_sortowania_temp2;
local z="[Zz]";
local ze="[Zz][Ee]";
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..z..")%s+(%S.*)%s*$",1);
local poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek3)then
poczatek3,koniec3,_,nazwa_sortowania_temp3=mw.ustring.match(nazwa_sortowania_temp,",%s+("..ze..")%s+(%S.*)%s*$");
end;
local poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^,%s]%s+("..z..")%s+(%S.*)%s*$");
if(not poczatek4)then
poczatek4,koniec4,_,nazwa_sortowania_temp4=mw.ustring.match(nazwa_sortowania_temp,"[^%s,]%s+("..ze..")%s+(%S.*)%s*$");
end;
local CzyWiecej=function(nazwa_sortowania)
local ile=0;local tak=false;
local iter=mw.ustring.gmatch(nazwa_sortowania,"%S+");
for wyraz in iter do
if(tak)then return;end;
local wyraz2=mw.ustring.gsub(wyraz,"%,+$","");
wyraz2=mw.ustring.lower(wyraz2);
if(tablica_wyrazowa_niealternatyw[wyraz2])then tak=true;break;end;
if(not mw.ustring.match(wyraz,",$"))then
ile=ile+1;
else
ile=ile+1;
tak=true;
break;
end;
end;
if(not tak)then return 1;end;
return ile;
end;
local czy_wiecej=nazwa_sortowania_temp2 and (CzyWiecej(nazwa_sortowania_temp2)>1) or false;
local czy_warunek=((not poczatek3) or poczatek4)or(czy_wiecej);
if(poczatek2)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true and ((not poczatek4)or(poczatek3));
else
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania,",%s+("..ze..")%s+(%S.*)%s*$",1);
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=(poczatek2 and true or false) and czy_warunek;
end;
if(poczatek2)then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp2,"^%s*(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
nie_usuwaj_pierwszego_z_kolei_wyrazu=(ile_wyrazy_specialne==0)and true or false;
tab_dane[poczatek]={name,(not czy_warunek)and nazwa_sortowania_temp or nazwa_sortowania_temp2,};
else
local poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..z..")%s+(%S.*)%s*$",1);
if(not poczatek2)then
poczatek2,koniec2,_,nazwa_sortowania_temp2=mw.ustring.find(nazwa_sortowania_temp,"%s+("..ze..")%s+(%S.*)%s*$",1);
end;
if(poczatek2)then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif(name_wyszukane=="przez")then
local _,_,ile_wyrazy_specialne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if(ile_wyrazy_specialne==0)then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
elseif((name_wyszukane~="z")and(name_wyszukane~="ze"))then
tab_dane[poczatek]={name,nazwa_sortowania_temp,};
end;
tab_przyimki[name_wyszukane]=true;
end;
end;
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=false
or czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka
or (
((not tab_przyimki["z"])and(tab_przyimki["ze"]))
and(not CzyJestWeNazwieSortowaniaTenParserowyWyrazLubGrupaWyrazowa(nazwa_sortowania,tablica_wyrazy_parsowania_nazwy_sortowania))
);
if(not czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka)then
for name,value in pairs(tablica_zmiana_liczenia_nazwy_sortowania)do
if(
mw.ustring.match(nazwa_sortowania,name)
or mw.ustring.match(nazwa_sortowania,mw.getContentLanguage():ucfirst(name))
)then
czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka=true;
break;
end;
end;
end;
local minimim_maksimum;
if(not czy_skorzystales)then
local __min=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.min or math.max;
local __max=czy_ma_liczyc_wartosc_maksymalna_pozycji_przyimka and math.max or math.min;
local IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu=parametry_modul.IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu;
local __next=IteratorKluczeTabeliAlfabetycznieSortujDoPrzodu(tab_dane);
local __metatabelka={
__pairs=function(tab_dane)
return __next,tab_dane,nil;
end;
};
setmetatable(tab_dane,__metatabelka);
for name,value in pairs(tab_dane)do
if(not minimim_maksimum)then minimim_maksimum=name;end;
local TempFunc=function()
if((value[1]=="w")or(value[1]=="we"))then
minimim_maksimum=__min(minimim_maksimum,name);
else
minimim_maksimum=__max(minimim_maksimum,name);
end;
end;
local next_klucz=__next(tab_dane,name);
if(next_klucz)then
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,next_klucz-1);
else
pomiedzy_przyimkami=mw.ustring.sub(nazwa_sortowania,name,#nazwa_sortowania);
end;
pomiedzy_przyimkami=mw.ustring.match(pomiedzy_przyimkami,"^%s*"..value[1].."%s+(.*)$");
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(pomiedzy_przyimkami,"^%s*(%S+)",nil,tablica_wyrazowa_jakich,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0))then
local __temp=__max;
__max=__min;
__min=__temp;
end;
TempFunc();
end;
end;
if((minimim_maksimum)or(czy_skorzystales))then
local nazwa_sortowania_temp=(not czy_skorzystales) and tab_dane[minimim_maksimum][2] or nazwa_sortowania;
nazwa_sortowania_temp=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania_temp);
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania_temp,"^%s*(%S+)",nil,tablica_analizowania_bez_serwisy,true);
if((ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0))then nie_usuwaj_pierwszego_z_kolei_wyrazu=true;end;
return nazwa_sortowania_temp,1,nie_usuwaj_pierwszego_z_kolei_wyrazu;
else
return nazwa_sortowania,0,nie_usuwaj_pierwszego_z_kolei_wyrazu;
end;
end;
local WydzielonaNazwaSortowaniaPoMinusieLubPauzie=function(nazwa_sortowania)
local czy_niezmieniono=true;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%-%–][^%-%–]*%s+[%-%–]%s+(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
local nazwa_sortowania_temp=mw.ustring.match(nazwa_sortowania,"^%s*[^%s%:][^%:]*%s*[%:]%s*(%S.-)%s*$");
czy_niezmieniono=czy_niezmieniono and (not nazwa_sortowania_temp);
nazwa_sortowania=nazwa_sortowania_temp or nazwa_sortowania;
return nazwa_sortowania,(not czy_niezmieniono);
end;
local WyrazOdWielkiejLiteryNazwySortowania=function(nazwa_sortowania,czy_od_poczatku)
local ktoras_duza_litera=mw.ustring.match(nazwa_sortowania,((czy_od_poczatku and "^%s*" or "%s+").."%p*%u"));
return ktoras_duza_litera and true or false;
end;
local function UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera)
if(mw.ustring.match(nazwa_sortowania,"^%(%a+[%a%s]*%)"))then return nazwa_sortowania;end;
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_wyrazy_do_usuwania_przez_sortowanie;
local tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie=kategorie_dane_modul.tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie;
local tablica_dzielenia_elementowa_sortowania=kategorie_dane_modul.tablica_dzielenia_elementowa_sortowania;
local tablica_wyrazowa_niealternatyw=kategorie_dane_modul.tablica_wyrazowa_niealternatyw;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
repeat
local ile=0;local ile1=0;local ile2=0;local ile3=0;
nazwa_sortowania,ile1=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_wyrazowa_niealternatyw,nil,false,true);
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile2=UsuwaneElemementyNazwySortowania(nazwa_sortowania,tablica_kompletne_wyrazy_do_usuwania_przez_sortowanie,tablica_wyrazy_do_usuwania_przez_sortowanie,true,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
if(not ktoras_duza_litera)then
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania,ile3=UsuwaneElemementyNazwySortowania(nazwa_sortowania,nil,tablica_dzielenia_elementowa_sortowania,false,true);
local _,_,ile_jest_dla_niedoposzczalne=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(ile_jest_dla_niedoposzczalne>0)then
return stara_nazwa_sortowania;
end;
end;
ile=ile1+ile2+ile3;
until (ile==0);
return nazwa_sortowania;
end;
function p.NazwaSortowaniaNazwyStrony(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame,true);
local nazwa_sortowania=args[1];
local techniczne_modul=require("Module:Techniczne");
nazwa_sortowania=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(nazwa_sortowania);
if(not mw.ustring.match(nazwa_sortowania,"/"))then
nazwa_sortowania=KorygowanieSekwencjiInterpunkciNazwySortowania(nazwa_sortowania);
local kategorie_dane_modul=mw.loadData("Module:Kategorie/dane");
local tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania=kategorie_dane_modul.tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania;
local tablica_charakterystycznych_przedrostowych=kategorie_dane_modul.tablica_charakterystycznych_przedrostowych;
local tablica_specjalne_wyrazy_sortowania=kategorie_dane_modul.tablica_specjalne_wyrazy_sortowania;
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
local _,_,ile_jest_charakterystycznych_przedrostkowych=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_charakterystycznych_przedrostowych);
local _,_,ile_jest_specjalne_wyrazy_sortowania=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_specjalne_wyrazy_sortowania);
if((ile_jest_na_poczatku>0)and((ile_jest_charakterystycznych_przedrostkowych==0)and(ile_jest_specjalne_wyrazy_sortowania==0)))then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
if(CzyPierwszyWyrazPrzezSortowanie(nazwa_sortowania))then return nazwa_sortowania,true;end;
local czy_zmieniono;
local stara_nazwa_sortowania=nazwa_sortowania;
local nazwa_sortowania_po_minusie_lub_pausie=nazwa_sortowania;
local tablica_wyrazy_niedopuszczalne=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne;
local tablica_wyrazy_niedopuszczalne_prefiks=kategorie_dane_modul.tablica_wyrazy_niedopuszczalne_prefiks;
nazwa_sortowania,czy_zmieniono=WydzielonaNazwaSortowaniaPoMinusieLubPauzie(nazwa_sortowania);
if(czy_zmieniono)then
local _,_,ile_jest_dla_myslnika0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_myslnika2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if((ile_jest_dla_myslnika0==0)and(ile_jest_dla_myslnika1>ile_jest_dla_myslnika2))then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
else
local _,_,ile_jest_na_poczatku=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%s_]*(.-)[%s_]*$",nil,tablica_kompletne_wyrazowy_do_sortowania_bez_analizowania);
if(ile_jest_na_poczatku>0)then
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
local ktoras_duza_litera=WyrazOdWielkiejLiteryNazwySortowania(nazwa_sortowania);
local tablica_analizowanie_bez=kategorie_dane_modul.tablica_analizowanie_bez;
local tablica_analizowania_bez_program=kategorie_dane_modul.tablica_analizowania_bez_program;
local tablica_analizowania_bez_serwisy=kategorie_dane_modul.tablica_analizowania_bez_serwisy;
local tablica_analizowanie_specjalne_wyrazy=kategorie_dane_modul.tablica_analizowanie_specjalne_wyrazy;
local _,_,ile_wyrazy_specialne1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_bez,true);
local _,_,ile_wyrazy_specialne2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_program,true);
local _,_,ile_wyrazy_specialne3=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowania_bez_serwisy,true);
local _,_,ile_wyrazy_specialne_wyrazy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",nil,tablica_analizowanie_specjalne_wyrazy,true);
local nazwa_sortowania_przed_przyimkiem=(czy_zmieniono) and nazwa_sortowania_po_minusie_lub_pausie or nazwa_sortowania;
local ile_przyimki;local nie_usuwaj_pierwszego_z_kolei_wyrazu;
if((not ktoras_duza_litera)or(ile_wyrazy_specialne1>0)or(ile_wyrazy_specialne2>0)or(ile_wyrazy_specialne3>0)or(ile_wyrazy_specialne_wyrazy>0)or(ile_jest_charakterystycznych_przedrostkowych>0))then
local stara_nazwa_sortowania=nazwa_sortowania;
local tablica_wyrazowa_wybrane_przyimki=kategorie_dane_modul.tablica_wyrazowa_wybrane_przyimki;
local _,_,ile_jest_dla_przyimki0=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"^[%p%s]*(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_dla_przyimki1=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
local _,_,ile_jest_przyimki=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
nazwa_sortowania,ile_przyimki,nie_usuwaj_pierwszego_z_kolei_wyrazu=TekstPoPrzyimkuNazwySortowania(nazwa_sortowania);
local _,_,ile_jest_dla_przyimki2=ZamienianieWyrazoweSzereguWyrazuKompleksowe(nazwa_sortowania,"%s+(%S+)",tablica_wyrazy_niedopuszczalne,tablica_wyrazy_niedopuszczalne_prefiks);
if(
(ile_jest_dla_przyimki0==0)
and(
((ile_przyimki>0)and(ile_jest_dla_przyimki1-ile_jest_dla_przyimki2>0))
or((ile_przyimki==0)and(ile_jest_dla_przyimki1>0))
)
)then
nazwa_sortowania=stara_nazwa_sortowania;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
end;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local nazwa_sortowania_temp=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania_temp))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
ile_przyimki=nil;
nie_usuwaj_pierwszego_z_kolei_wyrazu=nil;
end;
ile=IleJestSpacjiNazwySortowania(nazwa_sortowania);
if(ile>0)then
local stara_nazwa_sortowania=nazwa_sortowania;
if(not ktoras_duza_litera)then
local tablica_wyrazowa_alternatyw=kategorie_dane_modul.tablica_wyrazowa_alternatyw;
local _,_,ile_znalezione=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"%s+(%S+)",tablica_wyrazowa_alternatyw,nil);
if(ile_znalezione>0)then
local tablica_wyrazowa_gdy_alternatywy=kategorie_dane_modul.tablica_wyrazowa_gdy_alternatywy;
local _,_,ile_specjalne_gdy_alternatywy=ZamienianieWyrazoweSzereguWyrazuKompleksowe(stara_nazwa_sortowania,"^%s*(%S+)",nil,tablica_wyrazowa_gdy_alternatywy);
if(ile_specjalne_gdy_alternatywy==0)then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
end;
end;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania,ktoras_duza_litera);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
nazwa_sortowania=UsuwanieNazwaSortowanie(nazwa_sortowania);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=nazwa_sortowania_przed_przyimkiem;
nazwa_sortowania=(not nie_usuwaj_pierwszego_z_kolei_wyrazu)and UsuwanieKolejnegoPierwszegoWyrazuNazwySortowania(nazwa_sortowania) or nazwa_sortowania;
end;
end;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
local stara_nazwa_sortowania=nazwa_sortowania;
nazwa_sortowania=UsuwanieZnakoweInterpunkcjiWprowadzeniaNazwySortowania(nazwa_sortowania,false);
if(CzyZnakiTylkoNiewidzialneInterpukcjiOrazKreskiDolnejNazwySortowania(nazwa_sortowania))then
nazwa_sortowania=stara_nazwa_sortowania;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
end;
nazwa_sortowania=p.NazwaElementuZWyrazemOdWielkichLiter(nazwa_sortowania);
return nazwa_sortowania,true;
end;
nazwa_sortowania=UsuwanieSekwencjiArtykularnychLubZnakowychNawiasowychZnakoweInterpunkcjiWprowadzeniaNazwySortowaniaStrony(nazwa_sortowania);
return nazwa_sortowania,false;
end;
return p;
jci42qmocgah2ad1p9zckivyu7s45ay
Wikibooks:Moduły/Strony
4
63361
557748
555611
2026-09-27T09:08:12Z
Persino
2851
557748
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Strony}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local strony_modul=require("Module:Strony");
</syntaxhighlight>
Dzięki któremu można wypisywać funkcje należącego do niego.
Funkcje z {{Code|p.}} należą do tablicy transportu zwracanej przez moduł: {{Code|{{ld2|Strony}}}}, a bez niego to są funkcje lokalne w tym module oznaczone słowem {{Code|local}}.
Funkcje w tym module są wykorzystywane do sprawdzania, czy dany tekst spełnia jakieś warunki, funkcje bez {{Code|p.}} są wykorzystywane tylko w tym module, a z tym są bazą do implementacji modułu: {{Code|{{ld2|Sprawdź}}}}, w funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, które służą do sprawdzania parametrów szablonów za pomocą funkcji w module: {{Code|{{ld2|Strony}}}}, ta funkcja też korzysta z innych funkcji z innych modułów w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== Właściwe lokalne funkcje sprawdzające ==
=== {{Śródtytuł|checkUri}}{{Code|checkUri}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy podany: {{Code|uri}}, jest adresem URL.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkUri(uri)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|uri}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Funkcja obsługuje protokoły dla adresów URL podane w liście dla stronie {{ld2|Strony/dane}}:
<syntaxhighlight lang="lua">
p.obslugiwaneUriSchematy={
-- najczęściej używane
'http://', 'https://', '//',
-- możliwe
'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://',
'irc://', 'ircs://', 'magnet:', 'mailto:', 'mms://', 'news:',
'nntp://', 'redis://', 'sftp://', 'sip:', 'sips:', 'sms:', 'ssh://',
'svn://', 'tel:', 'telnet://', 'urn:', 'worldwind://', 'xmpp:',
};
</syntaxhighlight>
Funkcja zwraca wartość logiczną {{Code|true}}, gdy podany adres jest adresem URL, według obsługiwanych protokołów, a jeśli nie, to ona zwróci wartość {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local uri="https://em.wikibooks.org/wiki/Mechanik_teoretyczna";
local czy_tak=checkUri(uri);
</syntaxhighlight>
Funkcja w przykładzie zrzuci wartość logiczną {{Code|czy_tak {{=}} true}}, czyli prawdę.
=== {{Śródtytuł|checkImageName}}{{Code|checkImageName}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkImageName(name_nieprzetworzone,przestrzen)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|name_nieprzetworzone}} | _1 = Nazwa pliku z przestrzenia nazw lub nie, w zależności od drugiego parametru.
| 2 = {{Code|przestrzen}} | _2 = Czy w nazwie pliku mają być uwzględniane przestrzenie nazw.
}}
Funkcja sprawdza, czy podany adres wewnętrzny jest adresem pliku. Możliwe są dwa warianty, wariant: {{Code|przestrzen {{=}} false}}, gdzie nie może być podana przestrzeń nazw plikowa, tzn., która jest podana w zmiennej na stronie: {{Code|{{ld2|Strony/dane}}}}, którego fragment:
<syntaxhighlight lang="lua">
prefix = {
plik = true,
image = true,
grafika = true,
file = true,
media = true,
},
</syntaxhighlight>
lub może, ale nie musi być podana z dodatkowymi przestrzeniami, nawet nieplikowymi, w takim przypadku ta funkcji zwróci wynik: {{Code|false}}, a w przeciwnym wypadku, funkcja może zrzucić wartość {{Code|true}}, ale nie musi.
Możliwe są rozszerzenia plików, dla których ta funkcja może dać wynik {{Code|true}}, tzn.:
<syntaxhighlight lang="lua">
extension = {
flac = true,
jpg = true,
jpeg = true,
jpe = true,
mid = true,
midi =true,
mp3 = true,
mpg = true,
mpeg = true,
oga = true,
ogg = true,
ogv = true,
opus = true,
png = true,
svg = true,
tif = true,
tiff = true,
gif = true,
xcf = true,
pdf = true,
djvu = true,
wav = true,
webm = true,
webp = true,
},
</syntaxhighlight>
Ale plik też nie musi mieć rozszerzenia, ale może, pliki bez nich bez przestrzeni plikowych:
<syntaxhighlight lang="lua">
name = {
["@"]=true,
},
</syntaxhighlight>
Funkcja zwróci wartość {{Code|true}}, gdy strona jest prawidłowych adresem wewnętrznym strony przestrzeni plikowej, gdy drugi argument jest {{Code|false}}, strona nie może być podana z przestrzeniami plikowymi, ale z innymi już tak, co wtedy jest to traktowane jako część nazwy w przestrzeni nazw: {{Np|File|link=tak}}. Gdy drugi parametr ma wartość prawdziwą, wtedy strona może być podana z przestrzenią lub nie, byle tylko był to, pełny lub nie, adres strony pliku.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local plik="Grafika:Strona_pliku.jPG";
local czy_tak=checkImageName(plik,true);
</syntaxhighlight>
Strona jest podana, z prawidłową przestrzenią plikową, z prawidłowym rozszerzeniem pliku, więc wtedy funkcja zrzuci wartość {{Code|czy_tak}} równą {{Code|true}}.
; Drugi
<syntaxhighlight lang="lua">
local plik="Strona_pliku.jPG";
local czy_tak=checkImageName(plik,false);
</syntaxhighlight>
Strona jest podana bez przestrzeni plikowej, ale z prawidłowym rozszerzeniem pliku, więc wtedy funkcja zrzuci wartość {{Code|czy_tak}} równą {{Code|true}}.
=== {{Śródtytuł|findPlainHttp}}{{Code|findPlainHttp}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy adres: {{Strong|http://}}, czy {{Strong|https://}}, w tekście, czy istnieje, sprawdza, czy ona nie jest częścią linku zewnętrznego, a jeśli tak, to funkcja zwraca wynik równy, ale nie {{Code|nil}}, w przeciwnym wypadku {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findPlainHttp(text)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|text}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local czy_tak=findPlainHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local czy_tak=findPlainHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|nil}}.
=== {{Śródtytuł|findAnyHttp}}{{Code|findAnyHttp}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findAnyHttp(text)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|text}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Funkcja sprawdza, czy adres: {{Strong|http://}}, czy {{Strong|https://}}, jest w tekście, wtedy funkcji zwróci wynik nienilowy, a w przeciwnym wypadku {{Code|nil}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local czy_tak=findAnyHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local czy_tak=findAnyHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
=== {{Śródtytuł|findFile}}{{Code|findFile}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy w tekście jest wywołanie plikowe. Funkcja chowaj wyjątek z obrazka generowanego przez: {{Code|{{s|Link-interwiki|z przestrzenią=tak}}}}.
Definicji skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findFile(text)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|text}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Funkcja rozpoznaje rozszerzenia plików: {{Strong|Plik}}, {{Strong|File}}, {{Strong|Grafika}} i {{Strong|Image}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tekst="Strona z plikiem: [[Plik:Strona_plikowa.jpg|thumb|right|250px|link=w:Strona_na_wikipedii|Oto jest opis]], a oto jest dalszy tekst.";
local czy_tak=findFile(tekst);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
=== {{Śródtytuł|checkSizeFile}}{{Code|checkSizeFile}} ===
Funkcja sprawdza rozmiary, który jest łańcuchem znaków, czy zgadza się z określonym formatem według ustawień w module: {{Code|{{ld2|Strony/dane}}}}, według dwóch dostępnych trybów.
; Tryb {{nobold|{{ZobaczTeż|Tryb fałszywy}}}} fałszywy, gdy {{Nobold|{{Code|tryb {{=}} false}}}} {{Patrz|tryb {{=}} false}}{{Dk}}
<syntaxhighlight lang="lua">
p.tablica_parsowania_rozmiaru_pliku={
"^%s*%d+px%s*$",
"^%s*x%d+px%s*$",
"^%s*%d+x%d+px%s*$",
};
</syntaxhighlight>
Wtedy to jest zgodne te rozmiary z mechanizmem {{NS|k=mw|w=tak|pk=n|l=tak}}, przeciwieństwie do: {{LinkZobaczTeż|Tryb prawdziwy}}, trybu prawdziwego.
; Tryb {{nobold|{{ZobaczTeż|Tryb prawdziwy}}}} prawdziwy, gdy {{Nobold|{{Code|tryb {{=}} true}}}} {{Patrz|tryb {{=}} true}}{{Dk}}
<syntaxhighlight lang="lua">
p.tablica_parsowania_rozmiaru_pliku_2={
"^%d+%.?%d*(%a*)$",
"^%d+%.?%d*(%%)$",
"^x%d+%.?%d*(%a*)$",
"^x%d+%.?%d*(%%)$",
"^%d+%.?%d*(%a*)x%d+%.?%d*(%a*)$",
"^%d+%.?%d*(%%)x%d+%.?%d*(%a*)$",
"^%d+%.?%d*(%a*)x%d+%.?%d*(%%)$",
"^%d+%.?%d*(%%)x%d+%.?%d*(%%)$",
};
</syntaxhighlight>
Jest to tryb rozrzeszerzony do mechanizmu: {{LinkZobaczTeż|Tryb fałszywy}}, trybu fałszywego.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkSizeFile(size,tryb)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|size}} {{Patrz|size}} | _1 = Łańcuch znaków,który przedstawia tylko szerokość lub tylko wysokość albo jednocześniew jednym szerokość i wysokość,
| 2 = {{Code|tryb}} {{Patrz|tryb}} | _2 = Dostępne tryby: {{Code|false/true}}, pierwszy tryb, to dla {{LinkPatrz|tryb {{=}} false}}, a drugi {{LinkPatrz|tryb {{=}} true}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local rozmiar="12emx150px";
local tryb=true;
local czy_tak=checkSizeFile(rozmiar,tryb);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
== Funkcje obuduwujące właściwe funkcje sprawdzające ==
=== {{Śródtytuł|p.SprawdzanieURL}}{{Code|p.SprawdzanieURL}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieURL(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|checkUri}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres URL strony internetowej.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|url}}, czy {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local uri="https://em.wikibooks.org/wiki/Mechanik_teoretyczna";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieURL(uri);
</syntaxhighlight>
Funkcja w przykładzie zrzuci wartość logiczną {{Code|czy_tak {{=}} true}}, czyli prawdę.
=== {{Śródtytuł|p.SprawdzanieNazwyPlikowe}}{{Code|p.SprawdzanieNazwyPlikowe}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieNazwyPlikowe(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|checkImageName}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|nazwa}} lub {{Code|1}} | _1 = Nazwa strony, ewentualnie z rozszerzeniem strony.
| 2 = {{Code|przestrzeń}} lub {{Code|2}} | _2 = Czy ma uwzględniać przestrzeń nazw strony.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|nazwa}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local plik="Grafika:Strona_pliku.jPG";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieNazwyPlikowe(plik);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local plik="Strona_pliku.jPG";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieNazwyPlikowe(plik);
</syntaxhighlight>
Funkcja zrzuci wynik nienilowy.
=== {{Śródtytuł|p.ZnajdowanieNormalnychStronHttp}}{{Code|p.ZnajdowanieNormalnychStronHttp}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieNormalnychStronHttp(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|findPlainHttp}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|tekst}} lub {{Code|1}} | _1 = Jest to tekst do sprawdzenia, czy strony {{Strong|http://}} i {{Strong|https://}}, są nie w linku zewnętrznym.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieNormalnychStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieNormalnychStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|nil}}.
=== {{Śródtytuł|p.ZnajdowanieJakikolwiekStronHttp}}{{Code|p.ZnajdowanieJakikolwiekStronHttp}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieJakikolwiekStronHttp(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|findAnyHttp}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|tekst}} lub {{Code|1}} | _1 = Jest to tekst do sprawdzenia, czy strony {{Strong|http://}} i {{Strong|https://}}, są w tekście.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieJakikolwiekStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieJakikolwiekStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
=== {{Śródtytuł|p.ZnajdowaniePlikowe}}{{Code|p.ZnajdowaniePlikowe}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowaniePlikowe(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|findFile}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|tekst}} lub {{Code|1}}| _1 = Tekst do spradzenia, czy strona ma wywołania plikowe.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tekst="Strona z plikiem: [[Plik:Strona_plikowa.jpg|thumb|right|250px|link=w:Strona_na_wikipedii|Oto jest opis]], a oto jest dalszy tekst.";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowaniePlikowe(tekst);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
=== {{Śródtytuł|p.SprawdzanieRozmiaruPliku}}{{Code|p.SprawdzanieRozmiaruPliku}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieRozmiaruPliku(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|checkSizeFile}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|rozmiar}} lub {{Code|1}} | _1 = Jak w: {{LinkPatrz|size}}.
| 2 = {{Code|tryb}} lub {{Code|2}} | _2 = Jak w: {{LinkPatrz|tryb}}.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|rozmiar}}, czy {{Code|1}}, wtedy zachodzi {{LinkPatrz|tryb {{=}} false}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
giye8ji5mbvh9ejjn5kg9iq5t3k25mq
557749
557748
2026-09-27T09:09:20Z
Persino
2851
/* {{Śródtytuł|checkSizeFile}}{{Code|checkSizeFile}} */
557749
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Strony}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local strony_modul=require("Module:Strony");
</syntaxhighlight>
Dzięki któremu można wypisywać funkcje należącego do niego.
Funkcje z {{Code|p.}} należą do tablicy transportu zwracanej przez moduł: {{Code|{{ld2|Strony}}}}, a bez niego to są funkcje lokalne w tym module oznaczone słowem {{Code|local}}.
Funkcje w tym module są wykorzystywane do sprawdzania, czy dany tekst spełnia jakieś warunki, funkcje bez {{Code|p.}} są wykorzystywane tylko w tym module, a z tym są bazą do implementacji modułu: {{Code|{{ld2|Sprawdź}}}}, w funkcji: {{Code|{{m|Sprawdź|Parametry}}}}, które służą do sprawdzania parametrów szablonów za pomocą funkcji w module: {{Code|{{ld2|Strony}}}}, ta funkcja też korzysta z innych funkcji z innych modułów w języku {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
== Właściwe lokalne funkcje sprawdzające ==
=== {{Śródtytuł|checkUri}}{{Code|checkUri}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy podany: {{Code|uri}}, jest adresem URL.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkUri(uri)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|uri}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Funkcja obsługuje protokoły dla adresów URL podane w liście dla stronie {{ld2|Strony/dane}}:
<syntaxhighlight lang="lua">
p.obslugiwaneUriSchematy={
-- najczęściej używane
'http://', 'https://', '//',
-- możliwe
'bitcoin:', 'ftp://', 'ftps://', 'geo:', 'git://', 'gopher://',
'irc://', 'ircs://', 'magnet:', 'mailto:', 'mms://', 'news:',
'nntp://', 'redis://', 'sftp://', 'sip:', 'sips:', 'sms:', 'ssh://',
'svn://', 'tel:', 'telnet://', 'urn:', 'worldwind://', 'xmpp:',
};
</syntaxhighlight>
Funkcja zwraca wartość logiczną {{Code|true}}, gdy podany adres jest adresem URL, według obsługiwanych protokołów, a jeśli nie, to ona zwróci wartość {{Code|false}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local uri="https://em.wikibooks.org/wiki/Mechanik_teoretyczna";
local czy_tak=checkUri(uri);
</syntaxhighlight>
Funkcja w przykładzie zrzuci wartość logiczną {{Code|czy_tak {{=}} true}}, czyli prawdę.
=== {{Śródtytuł|checkImageName}}{{Code|checkImageName}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkImageName(name_nieprzetworzone,przestrzen)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|name_nieprzetworzone}} | _1 = Nazwa pliku z przestrzenia nazw lub nie, w zależności od drugiego parametru.
| 2 = {{Code|przestrzen}} | _2 = Czy w nazwie pliku mają być uwzględniane przestrzenie nazw.
}}
Funkcja sprawdza, czy podany adres wewnętrzny jest adresem pliku. Możliwe są dwa warianty, wariant: {{Code|przestrzen {{=}} false}}, gdzie nie może być podana przestrzeń nazw plikowa, tzn., która jest podana w zmiennej na stronie: {{Code|{{ld2|Strony/dane}}}}, którego fragment:
<syntaxhighlight lang="lua">
prefix = {
plik = true,
image = true,
grafika = true,
file = true,
media = true,
},
</syntaxhighlight>
lub może, ale nie musi być podana z dodatkowymi przestrzeniami, nawet nieplikowymi, w takim przypadku ta funkcji zwróci wynik: {{Code|false}}, a w przeciwnym wypadku, funkcja może zrzucić wartość {{Code|true}}, ale nie musi.
Możliwe są rozszerzenia plików, dla których ta funkcja może dać wynik {{Code|true}}, tzn.:
<syntaxhighlight lang="lua">
extension = {
flac = true,
jpg = true,
jpeg = true,
jpe = true,
mid = true,
midi =true,
mp3 = true,
mpg = true,
mpeg = true,
oga = true,
ogg = true,
ogv = true,
opus = true,
png = true,
svg = true,
tif = true,
tiff = true,
gif = true,
xcf = true,
pdf = true,
djvu = true,
wav = true,
webm = true,
webp = true,
},
</syntaxhighlight>
Ale plik też nie musi mieć rozszerzenia, ale może, pliki bez nich bez przestrzeni plikowych:
<syntaxhighlight lang="lua">
name = {
["@"]=true,
},
</syntaxhighlight>
Funkcja zwróci wartość {{Code|true}}, gdy strona jest prawidłowych adresem wewnętrznym strony przestrzeni plikowej, gdy drugi argument jest {{Code|false}}, strona nie może być podana z przestrzeniami plikowymi, ale z innymi już tak, co wtedy jest to traktowane jako część nazwy w przestrzeni nazw: {{Np|File|link=tak}}. Gdy drugi parametr ma wartość prawdziwą, wtedy strona może być podana z przestrzenią lub nie, byle tylko był to, pełny lub nie, adres strony pliku.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local plik="Grafika:Strona_pliku.jPG";
local czy_tak=checkImageName(plik,true);
</syntaxhighlight>
Strona jest podana, z prawidłową przestrzenią plikową, z prawidłowym rozszerzeniem pliku, więc wtedy funkcja zrzuci wartość {{Code|czy_tak}} równą {{Code|true}}.
; Drugi
<syntaxhighlight lang="lua">
local plik="Strona_pliku.jPG";
local czy_tak=checkImageName(plik,false);
</syntaxhighlight>
Strona jest podana bez przestrzeni plikowej, ale z prawidłowym rozszerzeniem pliku, więc wtedy funkcja zrzuci wartość {{Code|czy_tak}} równą {{Code|true}}.
=== {{Śródtytuł|findPlainHttp}}{{Code|findPlainHttp}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy adres: {{Strong|http://}}, czy {{Strong|https://}}, w tekście, czy istnieje, sprawdza, czy ona nie jest częścią linku zewnętrznego, a jeśli tak, to funkcja zwraca wynik równy, ale nie {{Code|nil}}, w przeciwnym wypadku {{Code|nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findPlainHttp(text)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|text}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local czy_tak=findPlainHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local czy_tak=findPlainHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|nil}}.
=== {{Śródtytuł|findAnyHttp}}{{Code|findAnyHttp}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findAnyHttp(text)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|text}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Funkcja sprawdza, czy adres: {{Strong|http://}}, czy {{Strong|https://}}, jest w tekście, wtedy funkcji zwróci wynik nienilowy, a w przeciwnym wypadku {{Code|nil}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local czy_tak=findAnyHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local czy_tak=findAnyHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
=== {{Śródtytuł|findFile}}{{Code|findFile}} ===
Funkcja jest formułowana do użycia tylko w module, w której został zdefiniowany, ze względu na lokalność tej funkcji.
Funkcja sprawdza, czy w tekście jest wywołanie plikowe. Funkcja chowaj wyjątek z obrazka generowanego przez: {{Code|{{s|Link-interwiki|z przestrzenią=tak}}}}.
Definicji skrótowa funkcji:
<syntaxhighlight lang="lua">
local function findFile(text)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|text}} | _1 = Sprawdzany tekst, który ma spełniać pewne kryteria.
}}
Funkcja rozpoznaje rozszerzenia plików: {{Strong|Plik}}, {{Strong|File}}, {{Strong|Grafika}} i {{Strong|Image}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tekst="Strona z plikiem: [[Plik:Strona_plikowa.jpg|thumb|right|250px|link=w:Strona_na_wikipedii|Oto jest opis]], a oto jest dalszy tekst.";
local czy_tak=findFile(tekst);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
=== {{Śródtytuł|checkSizeFile}}{{Code|checkSizeFile}} ===
Funkcja sprawdza rozmiary, który jest łańcuchem znaków, czy zgadza się z określonym formatem według ustawień w module: {{Code|{{ld2|Strony/dane}}}}, według dwóch dostępnych trybów.
; Tryb {{nobold|{{ZobaczTeż|Tryb fałszywy}}}} fałszywy, gdy {{Nobold|{{Code|tryb {{=}} false}}}} {{nobold|{{Patrz|tryb {{=}} false}}}}{{Dk}}
<syntaxhighlight lang="lua">
p.tablica_parsowania_rozmiaru_pliku={
"^%s*%d+px%s*$",
"^%s*x%d+px%s*$",
"^%s*%d+x%d+px%s*$",
};
</syntaxhighlight>
Wtedy to jest zgodne te rozmiary z mechanizmem {{NS|k=mw|w=tak|pk=n|l=tak}}, przeciwieństwie do: {{LinkZobaczTeż|Tryb prawdziwy}}, trybu prawdziwego.
; Tryb {{nobold|{{ZobaczTeż|Tryb prawdziwy}}}} prawdziwy, gdy {{Nobold|{{Code|tryb {{=}} true}}}} {{nobold|{{Patrz|tryb {{=}} true}}}}{{Dk}}
<syntaxhighlight lang="lua">
p.tablica_parsowania_rozmiaru_pliku_2={
"^%d+%.?%d*(%a*)$",
"^%d+%.?%d*(%%)$",
"^x%d+%.?%d*(%a*)$",
"^x%d+%.?%d*(%%)$",
"^%d+%.?%d*(%a*)x%d+%.?%d*(%a*)$",
"^%d+%.?%d*(%%)x%d+%.?%d*(%a*)$",
"^%d+%.?%d*(%a*)x%d+%.?%d*(%%)$",
"^%d+%.?%d*(%%)x%d+%.?%d*(%%)$",
};
</syntaxhighlight>
Jest to tryb rozrzeszerzony do mechanizmu: {{LinkZobaczTeż|Tryb fałszywy}}, trybu fałszywego.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function checkSizeFile(size,tryb)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|size}} {{Patrz|size}} | _1 = Łańcuch znaków,który przedstawia tylko szerokość lub tylko wysokość albo jednocześniew jednym szerokość i wysokość,
| 2 = {{Code|tryb}} {{Patrz|tryb}} | _2 = Dostępne tryby: {{Code|false/true}}, pierwszy tryb, to dla {{LinkPatrz|tryb {{=}} false}}, a drugi {{LinkPatrz|tryb {{=}} true}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local rozmiar="12emx150px";
local tryb=true;
local czy_tak=checkSizeFile(rozmiar,tryb);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
== Funkcje obuduwujące właściwe funkcje sprawdzające ==
=== {{Śródtytuł|p.SprawdzanieURL}}{{Code|p.SprawdzanieURL}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieURL(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|checkUri}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres URL strony internetowej.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|url}}, czy {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local uri="https://em.wikibooks.org/wiki/Mechanik_teoretyczna";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieURL(uri);
</syntaxhighlight>
Funkcja w przykładzie zrzuci wartość logiczną {{Code|czy_tak {{=}} true}}, czyli prawdę.
=== {{Śródtytuł|p.SprawdzanieNazwyPlikowe}}{{Code|p.SprawdzanieNazwyPlikowe}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieNazwyPlikowe(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|checkImageName}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|nazwa}} lub {{Code|1}} | _1 = Nazwa strony, ewentualnie z rozszerzeniem strony.
| 2 = {{Code|przestrzeń}} lub {{Code|2}} | _2 = Czy ma uwzględniać przestrzeń nazw strony.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|nazwa}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local plik="Grafika:Strona_pliku.jPG";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieNazwyPlikowe(plik);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local plik="Strona_pliku.jPG";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.SprawdzanieNazwyPlikowe(plik);
</syntaxhighlight>
Funkcja zrzuci wynik nienilowy.
=== {{Śródtytuł|p.ZnajdowanieNormalnychStronHttp}}{{Code|p.ZnajdowanieNormalnychStronHttp}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieNormalnychStronHttp(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|findPlainHttp}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|tekst}} lub {{Code|1}} | _1 = Jest to tekst do sprawdzenia, czy strony {{Strong|http://}} i {{Strong|https://}}, są nie w linku zewnętrznym.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieNormalnychStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieNormalnychStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik {{Code|nil}}.
=== {{Śródtytuł|p.ZnajdowanieJakikolwiekStronHttp}}{{Code|p.ZnajdowanieJakikolwiekStronHttp}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowanieJakikolwiekStronHttp(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|findAnyHttp}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|tekst}} lub {{Code|1}} | _1 = Jest to tekst do sprawdzenia, czy strony {{Strong|http://}} i {{Strong|https://}}, są w tekście.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
; Pierwszy
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem https://pl.wikibooks.org ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieJakikolwiekStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
; Drugi
<syntaxhighlight lang="lua">
local tekst="Oto jest tekst z linkiem [https://pl.wikibooks.org pl.wikibooks.org] ilustrujący zasada działania Wikibooks";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowanieJakikolwiekStronHttp(tekst);
</syntaxhighlight>
Funkcja zrzuci wynik pozytywny nienilowy.
=== {{Śródtytuł|p.ZnajdowaniePlikowe}}{{Code|p.ZnajdowaniePlikowe}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnajdowaniePlikowe(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|findFile}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|tekst}} lub {{Code|1}}| _1 = Tekst do spradzenia, czy strona ma wywołania plikowe.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|tekst}}, czy {{Code|1}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local tekst="Strona z plikiem: [[Plik:Strona_plikowa.jpg|thumb|right|250px|link=w:Strona_na_wikipedii|Oto jest opis]], a oto jest dalszy tekst.";
local strony_modul=require("Module:Strony");
local czy_tak=strony_modul.ZnajdowaniePlikowe(tekst);
</syntaxhighlight>
Funkcja zwróci wartość nienilową, czyli pozytywną.
=== {{Śródtytuł|p.SprawdzanieRozmiaruPliku}}{{Code|p.SprawdzanieRozmiaruPliku}} ===
Funkcję uruchamia się w ramce w wikikodzie w szablonie lub w kodzie {{lpg|Lua}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieRozmiaruPliku(frame)...end;
</syntaxhighlight>
Funkcja w swojej budowie bezpośrednio wykorzystuje funkcję {{LinkŚródtytuł|checkSizeFile}}.
Funkcja wykorzystuje do zbierania parametrów funkcji funkcję: {{LinkŚródtytuł|p.PobierzParametr|Parametry/Tom XIV}}, którego parametr może być podany w postaci zmiennej łańcuchowej znaków, lub w postaci tablicy, a również w zmiennej {{Code|args}}, w tablicy, która jest parametrem funkcji, a nawet mogą być parametry podane w ramce z wywołaniem tej funkcji.
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|rozmiar}} lub {{Code|1}} | _1 = Jak w: {{LinkPatrz|size}}.
| 2 = {{Code|tryb}} lub {{Code|2}} | _2 = Jak w: {{LinkPatrz|tryb}}.
}}
Kolejność ważności parametrów jest podana w kolejności prostej jak to wyliczono parametry ramki.
Ramka wywołana w wikikodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}} uwzględnia parametry ramki, gdy ma on dodatkowy parametr dziecka {{Parametr|wyspecjalizowana|tak}}, w pezeciwnym wypadku liczą się parametry rodzica.
Jeżeli tym argumentem funkcji nie jest tabela, czy sama ramka, wtedy jest to łańcuch znakowych, który tyle znaczy, co te jej parametry, czyli: {{Code|rozmiar}}, czy {{Code|1}}, wtedy zachodzi {{LinkPatrz|tryb {{=}} false}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ly4o71ln0xqxedygaxdtkjtyady9vea
Wikibooks:Moduły/Html
4
63462
557696
557062
2026-09-26T23:56:38Z
Persino
2851
557696
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|parametry}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = Adres strony.
| 2 = {{Code|2}} lub {{Code|ukośnik}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu lub w parametrze o takej samej nazwie według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
svuby3ip3c3xqgds05fp5rwt5joqmpd
557697
557696
2026-09-27T00:00:39Z
Persino
2851
557697
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|parametry}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = Adres strony.
| 2 = {{Code|2}} lub {{Code|ukośnik}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej telstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Ważność parametrów jest brana na podstawie opisu: {{LinkZobaczTeż|ważność_parametrów_ramki|}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r686f8kpdqwusklr7k2ppt1qdptz7b6
557699
557697
2026-09-27T00:30:53Z
Persino
2851
557699
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|parametry}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = Adres strony.
| 2 = {{Code|2}} lub {{Code|ukośnik}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|frame_tablica_ramki_parametry|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
q7geclw0glf565fl2palczdd7rf7e6o
557700
557699
2026-09-27T00:32:24Z
Persino
2851
557700
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_nie_dolne_myslniki}} (parametr funkcji), {{Code|2}} lub {{Code|z nie dolnymi z myślnikami}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|parametry}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}}, {{Code|strona}} lub {{Code|nazwa jednostki}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy_naprawiaj}} (parametr funkcji), {{Code|2}} lub {{Code|czy naprawiać}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = Adres strony.
| 2 = {{Code|2}} lub {{Code|ukośnik}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} lub {{Code|url}} | _1 = adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hsm87qyv5t8fhku3ll5qj6l6x3zgqb0
557710
557700
2026-09-27T01:35:48Z
Persino
2851
557710
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
Przykłady użycia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
local id="https://pl.wikibooks.org/w/index.php?title=Szablon:Link_wewn%C4%99trzny&action=edit#Obs%C5%82uga";
local id2=html_modul.EncodeId(id,false);
</syntaxhighlight>
Wynikiem tego:
<syntaxhighlight lang="lua">
local id2="https://pl.wikibooks.org/w/index.php?title=Szablon:Link wewnętrzny&action=edit#Obsługa";
</syntaxhighlight>
Gdy: {{Code|bez_transformacji{{=}}true}}, funkcja działa jak: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale wtedy {{Code|frame{{=}}id}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
fnlawh0mhyv3nm1zvyitx2ir92p3p8o
557711
557710
2026-09-27T01:37:22Z
Persino
2851
/* {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} */
557711
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = to samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cbnt0l0hpy27ri1ckx5tea5ikz1q82a
557715
557711
2026-09-27T01:53:31Z
Persino
2851
557715
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony,wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2r4r39wtzdr6qd2nary15rqfn1298og
557716
557715
2026-09-27T01:55:16Z
Persino
2851
/* {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} */
557716
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Na samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nbvx3806w9j8abp67alu4delmqhs3en
557717
557716
2026-09-27T01:59:56Z
Persino
2851
/* {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} */
557717
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składający się z adresu właściwego, parametrów i nagłówka, rozdzielane jest na trzy części, z których się składa. Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy cos powstaje w rodzaju dla kodu dziesietnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Funkcja rozdziela to na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rt65ro0byeydmavnuxhvs7ko1lyw4he
557718
557717
2026-09-27T02:11:33Z
Persino
2851
/* {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} */
557718
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
8go7zspssscerol3d3pi9cqtwc3bykq
557719
557718
2026-09-27T02:17:30Z
Persino
2851
/* {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} */
557719
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana ajest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ac6fgmublug7ntew0r4gn497bfm55q4
557720
557719
2026-09-27T02:32:13Z
Persino
2851
557720
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem {{Strong|URL}} adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu {{Strong|HTML}}, który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów {{Strong|HTML}} lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów {{Strong|HTML}} dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów {{Strong|HTML}}, dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne {{Strong|HTML}}. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu {{Strong|HTML}}, a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu {{Strong|HTML}}, ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody {{Strong|HTML}}. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody {{Strong|HTML}}, aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}},
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod {{Strong|HTML}}, a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne {{Strong|HTML}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody {{Strong|HTML}}, w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu {{Strong|HTML}}.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody {{Strong|HTML}}, jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne {{Strong|HTML}}, tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu {{Strong|HTML}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny {{Strong|HTML}}.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne {{Strong|HTML}}, wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod {{Strong|HTML}}, ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody {{Strong|HTML}} do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne {{Strong|HTML}}, a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, {{Strong|HTML}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody {{Strong|HTML}}, tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów {{Strong|HTML}} na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody {{Strong|HTML}}, tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami {{Strong|HTML}} na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody {{Strong|HTML}} występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach {{Strong|HTML}} znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy {{Strong|HTML}}, czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych {{Strong|HTML}}) i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre {{Strong|HTML}}, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody {{Strong|HTML}}, to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów {{Strong|HTML}} znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach {{Strong|HTML}}, tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, {{Strong|HTML}}, dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody {{Strong|HTML}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1n1ztz5pbkefb8gtcp6dya0h8m3oh3z
557721
557720
2026-09-27T02:33:45Z
Persino
2851
557721
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{Code|{{sr|#p["TransformacjaKoduHtmlDoZnakuCiągu"]|p=Html}}}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{Code|{{sr|#p.UsuwanieSpecjalnychNieschematycznychSymboli|p=Html}}}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, a jeżeli nie to zostanie wywołana funkcja: {{Code|{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.uri.encode|b=tak}}}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{Code|{{sr|#p.DecodeWiki|p=Html}}}}, w przeciwnym wypadku: {{Code|{{sr|#p.EncodeWiki|p=Html}}}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{Code|{{sr|#p.IsEncodedHtml|p=Html}}}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{Code|{{sr|#p.DecodeWiki|p=Html}}}} lub {{Code|{{sr|#p.EncodeWiki|p=Html}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{Code|{{sr|#p["NagłówekStronyAdresu"]|p=Html}}}}, {{Code|{{sr|#p["ParametryStronyAdresu"]|p=Html}}}} i {{Code|{{sr|#p["NazwaStronyAdresu"]|p=Html}}}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{Code|{{sr|#p.DecodeTempHashKoduHtmlTekstu|p=Html}}}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{Code|{{sr|#p.StronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{Code|{{sr|#p.TworzenieAdresuHtml|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.ZamianaEncodeTekst|p=Html}}}}
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodeHtml|p=Html}}}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{Code|{{sr|#p.TworzenieStronaParametryIdentyfikacjaAdresuHtml|p=Html}}}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{Code|{{sr|#p.EncodeTempHashKoduHtmlTekstu|p=Html}}}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja wykorzystuje funkcję {{Code|{{sr|#p.ZamianaEncodeNaPodstawieWzoruTekstu|p=Html}}}}. A jeżeli druga wartość odpowiada prawdziwości, to korzystamy z {{Code|{{sr|#p["UrlBezProtokołu"]|p=Html}}}} na rozkład na adres bezprotokolarny i protokół.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{Code|{{sr|#p.AdresDomniemanieBezProtokolarnyEncodeURL|p=Html}}}}.
Do wyszukiwania adresów jest brana funkcja {{Code|{{sr|#p.PobierzParametr|p=Html}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{Code|{{sr|#p.KodowanieOmijanieFunkcyjne(html,...)|p=Html}}}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{Code|{{sr|#p.EncodeHashKoduHtmlTekstu|p=Html}}}} i {{Code|{{sr|#p.DecodeHashKoduHtmlTekstu|p=Html}}}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{Code|{{sr|#p.DecodeKoduHTMLZnaku|p=Html}}}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{Code|{{sr|#p.EncodeSpecjalneZnakiHtml|p=Html}}}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z {{Code|{{sr|#p.EncodePodstawoweHtmlTekstu|p=Html}}}}. Główny elementem funkcyjnym jest {{Code|{{sr|#p.EncodeZaawansowanyParametryHtml|p=Html}}}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
b5w08nobvgbokbuvpexv4eh0koafh5w
557722
557721
2026-09-27T03:06:19Z
Persino
2851
557722
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja {{LinkŚródtytuł|p.PobierzParametr}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3usi5hjutwvmv7wn0gea5i8umenf410
557723
557722
2026-09-27T03:08:36Z
Persino
2851
/* {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} */
557723
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hibvwsl6sehoiknriswphdawb60u31u
557724
557723
2026-09-27T04:18:27Z
Persino
2851
557724
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ==
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ==
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ==
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ==
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rhmuzhky8laeqthbn44j9i6ulyyd35f
557725
557724
2026-09-27T04:36:55Z
Persino
2851
557725
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
l6zwne4j26j7zfy740zuuh93hhoicps
557726
557725
2026-09-27T04:37:39Z
Persino
2851
/* Przykład kodu na stronie modułów z przykładami na stronie ich opisów */
557726
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3dwgruqcl1iwn84xt84kwkua2qr1ghk
557727
557726
2026-09-27T04:38:38Z
Persino
2851
/* Przykład kodu na stronie modułów z przykładami na stronie ich opisów */
557727
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ==
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ==
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ==
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ==
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ==
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ==
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ==
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ==
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pputbvthcfkbpyilqcym5xc4kimrizo
557728
557727
2026-09-27T04:51:28Z
Persino
2851
557728
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ==
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
28pf6t6e1v5b08xi0t77rsob6fahyzi
557729
557728
2026-09-27T04:54:07Z
Persino
2851
557729
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ==
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ==
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0xrfld8u0nu9fgdwb5e5fin4wtckbq5
557730
557729
2026-09-27T04:56:58Z
Persino
2851
557730
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ==
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ==
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ==
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ==
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ==
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ==
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ==
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ==
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ==
=== Odpowiednik szablonowy ===
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
=== Funkcja biblioteczna ===
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
=== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ===
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ==
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według {{LinkŚródtytuł|p.DecodeHtml}}, i cały ciąg od specjalnych znaków jest transformowany przez funkcję {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ==
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ==
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ==
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ==
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ==
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ==
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ==
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ==
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ==
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ==
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ==
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ==
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ==
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ==
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5gvwwkrfl57ioon06tsxeste5ygeoln
557731
557730
2026-09-27T05:14:19Z
Persino
2851
557731
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ==
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
=== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nfswdch7u0nt42utjrl63wfwk5w0j1y
557732
557731
2026-09-27T05:22:05Z
Persino
2851
557732
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
aotq8dwf0indbxe0srywjzdky5dzdfq
557733
557732
2026-09-27T05:39:50Z
Persino
2851
557733
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
o85am60a4l6fb9h1jfkvmbacnq9jci6
557735
557733
2026-09-27T05:53:51Z
Persino
2851
/* Funkcje pośrednie oparte na kombajnie */
557735
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cf0qyz4olzxf4z3w763vnwo9jqgee6o
557736
557735
2026-09-27T06:16:21Z
Persino
2851
/* {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} */
557736
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami i nagłówkiem strony, po podziale na je trzy części funkcją {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja {{LzLua|mw.uri.decode}}, a po nim {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami. Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu, funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami.
Funkcja wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}, jeżeli parametr: {{Code|w_adresie}}, przyjmuje wartość prawdziwą.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
16a6szj2aig8rr3q5793iqp0wbjouvm
557737
557736
2026-09-27T06:42:29Z
Persino
2851
/* Specjalistyczne ogólne funkcje adresów */
557737
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdnych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gc00iktxl2ukmodgiremags6zl06ctf
557738
557737
2026-09-27T06:45:33Z
Persino
2851
/* {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} */
557738
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', oraz jeżeli ciało jej wersji prostej została wywołana wcześniej. Jest to odwrotność funkcji {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
75kc8qdxxclzde4nl2t8336gy54bgyr
557739
557738
2026-09-27T06:54:03Z
Persino
2851
/* {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} */
557739
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ovouiy5f35h8altn2qywv0g0dev8a4n
557740
557739
2026-09-27T06:56:50Z
Persino
2851
/* {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} */
557740
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, przed wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}. Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bscjturqlrd5837avkk33n2bd4oafx9
557741
557740
2026-09-27T07:00:49Z
Persino
2851
/* {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} */
557741
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu,a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposoby, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
q2qmabvrtdkyzy26x0c6iwp7ty7rur1
557742
557741
2026-09-27T07:03:13Z
Persino
2851
/* {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} */
557742
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu jest do transformoacji potrzebna funkcję: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu, a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposobu, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
j12kz4mfkjk45bepdqrvnxf5r78wchc
557743
557742
2026-09-27T07:10:05Z
Persino
2851
/* {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} */
557743
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), aby nie była traktowana jako nazwana ze względu na występowanie znaku równości {{Code|{{=}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu do transformacji jest potrzebna funkcja: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu, a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposobu, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ol6a2i0frzc8bzmo31c62vu37ldju0g
557744
557743
2026-09-27T07:13:01Z
Persino
2851
/* {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} */
557744
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{Code|MediaWiki}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), ale wywołana jak nazwana, aby nie była traktowana jako nazwana ze względu na występowanie w nim znaku równości {{Code|{{=}}}}, potem jest w pełni nienazwana po tej transformacji.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu do transformacji jest potrzebna funkcja: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu, a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposobu, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|pk=d|l=tak}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
saywhe2wmjua444tfqomgy9no7ld2l9
557745
557744
2026-09-27T07:21:50Z
Persino
2851
557745
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
dzięki, któremu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{NS|k=mw|m=tak|l=tak|pk=d}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), ale wywołana jak nazwana, aby nie była traktowana jako nazwana ze względu na występowanie w nim znaku równości {{Code|{{=}}}}, potem jest w pełni nienazwana po tej transformacji.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu do transformacji jest potrzebna funkcja: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu, a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposobu, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|m=tak|l=tak|pk=m}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3fajcy49wyidrarvpcttlefc326v1ek
557746
557745
2026-09-27T07:25:00Z
Persino
2851
557746
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|Html}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Moduł wywołuje się za pomocą polecenia:
<syntaxhighlight lang="lua">
local html_modul=require("Module:Html");
</syntaxhighlight>
Dzięki temu poleceniu można wypisywać funkcje należącego do niego.
Moduł zawiera funkcje do posługiwania się dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' i zamieniania ich na odpowiednie znaki, zamieniania znaków na ich kody dziesiętne, i odwrotnie. Kodowaniem i dekodowaniem '''URL''' adresów internetowych, parametrów i nagłówków. Rozdzielaniem pełnych adresów na nazwę strony, zapytanie i nagłówek, odpowiednich ich kodowaniem, a potem ich łączenie z powrotem do innej wartości zwykle niż wcześniej tego samego ciągu.
== Kodowanie funkcyjne tekstu bez pewnych elementów pasujących do wzoru ==
=== {{Śródtytuł|p.KodowanieOmijanieFunkcyjne}}{{Code|p.KodowanieOmijanieFunkcyjne}} ===
Funkcja wywołuje funkcję modułu {{Code|{{ld2|Szeregi}}}} zwaną {{Code|{{sr|#p.SzeregiOmijanieFunkcyjne|p=Szeregi}}}}. Domyślnym wzorem jest {{Code|<nowiki>&([^&;%s]+);</nowiki>}}, ale można go zmienić na inny. Drugą funkcją podawaną do tej funkcji jest domyślnym obiektem funkcyjnym anonimowym, który nie podaje się do funkcji w nagłówku:
<syntaxhighlight lang="lua">
function(kod)
return "&"..kod..";";
end
</syntaxhighlight>
Gdzie {{Code|kod}} jest elementem przechwytywanym kodu '''HTML''', który jest określony poprzez nawiasy okrągłe we wzorze podawanym jako argument lub, jeśli jest on równy {{Code|nil}}, wtedy we wzorze domyślnym, który w takim razie jest rozpatrywany.
Funkcja służy do omijania wszystkich kodów '''HTML''' lub tylko niektórych i robienia na nich operacji za pomocą funkcji podawanej jako ostatni parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodowanieOmijanieFunkcyjne(html,normalnie,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Ciąg do przetworzenia, w częściach bez parametrów omijanych.
| 2 = {{Code|normalnie}} | _2 = Czy ma przetwarzać tekst pomijając, w przeciwnym wypadku tak nie robi.
| 3 = {{Code|wzor}} | _3 = Wzór do elementów pomijanych, wzór może mieć tylko jeden element przechwytywany.
| 4 = {{Code|funkcja}} | _4 = Funkcja robiąca operacje na przetworzonych subciągach bez elementów pomijanych.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodowanieOmijanieFunkcyjne/}}.
== Funkcje transformujące ==
=== {{Śródtytuł|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}}{{Code|p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]}} ===
Funkcja zamienia znaki specjalne wikikodu i wyrażeń regularnych na kody dziesiętne '''HTML'''. Zamieniane znaki, to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to nie jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>|[]()+-*?.^$%'</nowiki>}}. Jest ona potrzebna do zamiany nazw stron nazw wewnętrznych na {{NS|l=tak}}, a w nich te znaki na kody {{Code|HTML}}, by wykorzystać później to w funkcji: {{Code|mw.title.makeTitle}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKlasyZnakowejDoKoduHtmlCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKlasyZnakowejDoKoduHtmlCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKlasyZnakowejDoKoduHtmlCiągu/}}.
=== {{Śródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}{{Code|p["TransformacjaKoduHtmlDoZnakuCiągu"]}} ===
Zamienia w tekście znaki kodów '''HTML''' dziesiętne i szesnastkowe na odpowiednie znaki {{Strong|Unicode}}. Kody dziesiętne oznaczone są wyrażone wyrażeniem regularnym: {{Code|<nowiki>&#(%d+);</nowiki>}}, a szesnastkowe: {{Code|<nowiki>&#x(%x+);</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["TransformacjaKoduHtmlDoZnakuCiągu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany kodów '''HTML''', dziesiętnych i szesnastkowych, na znaki.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|TransformacjaKoduHtmlDoZnakuCiągu|tekst=Oto jest link: [[user:użytkownik|(Użytkownik)]].}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TransformacjaKoduHtmlDoZnakuCiągu/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneTaguNowiki}}{{Code|p.ZnakiSpecjalneTaguNowiki}} ===
Funkcja zamienia znaki specjalne, w tekście (w zawartości pomiędzy tagami tagu {{Tag|nowiki}}, by potem je tam umieścić, by pierwotna zawartość równała się tekstowi wyświetlanemu (aby on zamieniał się na tylko zwykły tekst, by nie był dalej rozwijalny względem funkcji: {{Code|frame:preproces}})), wikikodu na kody dziesiętne '''HTML'''. Zamieniane znaki to są podane w nawiasach kwadratowych w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, a przed tym znakiem jest zwykle {{Code|<nowiki>%</nowiki>}}, jeżeli to jest znak specjalny wyrażeń regularnych w nim, a te znaki zamieniane to są: {{Code|<nowiki>!{}|=<>[]</nowiki>}}. Dlatego te znaki, bo {{Code|<nowiki>=<>[]</nowiki>}} są częścią tagów mechanizmu '''HTML''', a w tagach mogą być też linki wewnętrzne, czy zewnętrzne, i nierozwinięte szablony, a więc też i {{Code|<nowiki>{}|</nowiki>}}, a elementy {{Code|<nowiki>!{}|=</nowiki>}} są one częścią wiki-tabelek mechanizmu {{NS|k=mw|m=tak|l=tak|pk=d}}, elementy te też mogą występować, gdzieś indziej w tekście w wikikodzie, również ze znakiem {{Code|<nowiki>=</nowiki>}} i z innymi tutaj wspomnianymi znakami tagowymi, też trzeba je zakodować nimi. Tak je kodujemy przez tę funkcję, by tak uzyskany tekst nie miał elementów mechanizmu '''HTML''', ani {{Strong|MediaWiki}}.
Funkcja potrzebuje, do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneTaguNowiki(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków, z zestawu znaków specjalnych wskazanych w funkcji, występujących w tagach języka '''HTML''' do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneTaguNowiki|tekst=<span id="toc">Oto jest tekst, i link: [[Pomoc:Spis treści|Spis treści]]</span>.}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneTaguNowiki/}}.
=== {{Śródtytuł|p.ZnakiSpecjalneWikiLinku}}{{Code|p.ZnakiSpecjalneWikiLinku}} ===
Zamienia znaki specjalne transformacji nagłówka adresów '''HTML''' (nagłówek zaczyna się od znaku {{Code|<nowiki>#</nowiki>}} - na samym końcu, w adresach stron, ale na samym początku w nich) na specjalne kody '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZnakiSpecjalneWikiLinku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZnakiSpecjalneWikiLinku|tekst={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZnakiSpecjalneWikiLinku/}}.
=== {{Śródtytuł|p.EncodeSpecjalneZnakiHtml}}{{Code|p.EncodeSpecjalneZnakiHtml}} ===
Zamienia znaki specjalne adresu strony, jego parametrów (bez {{Code|<nowiki>?</nowiki>}} - wskazującej na początek adresu strony z parametrami, {{Code|<nowiki>&</nowiki>}} - oddzielające zmienne i ich wartości, {{Code|<nowiki>=</nowiki>}} - oddzielającej parametr od jej wartości w zmiennej) i nagłówka (bez {{Code|<nowiki>#</nowiki>}} na samym początku) na specjalne kody '''HTML''', aby były one odróżnialne od innych specjalnych znaków adresów '''HTML'''. Do tego celu wykorzystuje znaki {{Code|<nowiki>{}|<>[]#=?&</nowiki>}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeSpecjalneZnakiHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu,
| 2 = {{Code|normalnie}}| _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML''',
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeSpecjalneZnakiHtml|html={{#invoke:Łatki|unstripNoWiki|tekst=<nowiki>[pl] Strony z nagłówkiem (mechanizmu HTML), a w nim jest szablon: {{Szablon do używania|parametr 1=wartość1|parametr 2=wartość2}}</nowiki>}}}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|html2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeSpecjalneZnakiHtml/}}.
=== {{Śródtytuł|p.EncodeZnakProloguList}}{{Code|p.EncodeZnakProloguList}} ===
Szablon zamienia pierwszy znak wiki-listy (więc znak po {{Code|<nowiki>\n</nowiki>}}), tzn. znaki z: {{Code|<nowiki>#*;:</nowiki>}} na kod '''HTML''', a znak bezpośrednio na samym początku od pewnego momentu, tzn. ten znak jest po znaku lub samym początku, to jest określane przez wyrażenie regularne: {{Code|<nowiki>^\n?</nowiki>}}, ten znak wiki-listy zamieniany jest na ten kod, a początkowy znak nowej linii, jeżeli istnieje, jest usuwany. To jest przyszykowane po to, gdyby w szablonie pierwszy wygenerowany znak, był tym znakiem listy (wtedy mechanizm {{Strong|MediaWiki}} generuje bezpośrednio przed nim znak nowej linii, który jest na początku łańcucha wygenerowany przez to), a więc ta funkcja służy też do tego.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZnakProloguList(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z podanego zestawu znaków pierwszych znaków listy, mechanizmu {{Strong|MediaWiki}}, do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|EncodeZnakProloguList|tekst=
* Oto jest pierwszy element listy,
*: Oto jest drugi element listy.
}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZnakProloguList/}}.
=== {{Śródtytuł|p.ParametryPrzypisaniaZnakowegoEncodeHtml}}{{Code|p.ParametryPrzypisaniaZnakowegoEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, bez parametrów, a parametry, tam gdzie one nie mogą występować, a jednak występują, opisujące parametry, tzn. od czego zaczynają się one, jak są one oddzielone, jak oddzielone są nazwy od ich wartości w przypadku parametru. Funkcja zamienia znaki {{Code|<nowiki>=%?&</nowiki>}} na kody dziesiętne '''HTML'''.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}. Funkcja potrafi opcjonalnie omijać kody '''HTML''', w zależności od podanego drugiego parametru.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParametryPrzypisaniaZnakowegoEncodeHtml(frame,normalnie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML'''.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany z zestawu znaków specjalnych, wskazanych w funkcji, do dziesiętnego kodu '''HTML'''.
| 2 = {{Code|normalnie}} | _2 = Czy ma omijać kody '''HTML''', jeżeli jej wartość odpowiada wartości logicznej {{Code|false}}, wtedy liczy się jej wersja parametrowa funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ParametryPrzypisaniaZnakowegoEncodeHtml|tekst=Wikibooks:Strona?action=edit§ion=2}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryPrzypisaniaZnakowegoEncodeHtml/}}.
=== {{Śródtytuł|p.PrzypisanieZnakoweEncodeHtml}}{{Code|p.PrzypisanieZnakoweEncodeHtml}} ===
Eliminuje znaki specjalne nazw stron, oddzielające nazwy parametrów od ich wartości, aby jak dana zmienna jest nienazwana (numerowana), ale wywołana jak nazwana, aby nie była traktowana jako nazwana ze względu na występowanie w nim znaku równości {{Code|{{=}}}}, potem jest w pełni nienazwana po tej transformacji.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PrzypisanieZnakoweEncodeHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany znaków przypisania {{Code|{{=}}}} do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|PrzypisanieZnakoweEncodeHtml|tekst=Wikibooks:Strona=Parametry}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PrzypisanieZnakoweEncodeHtml/}}.
=== {{Śródtytuł|p.ZamianaDwukropkaNaKodHtml}}{{Code|p.ZamianaDwukropkaNaKodHtml}} ===
Zamienia dwukropki na kody dziesiętne '''HTML''', tam gdzie one mają specjalne znaczenie, a po wyeliminowaniu ich (po zamianie) tracą owe znaczenie.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametryRamki|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaDwukropkaNaKodHtml(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zmienna, pod którym wyszukuje się tekst do zamiany ze znaku dwukropka do dziesiętnego kodu '''HTML'''.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
Funkcja może też być wywołane w ramce {{lpg|Lua}} w {{lpr|Lua|Scribunto}} wikikodu w szablonie:
<syntaxhighlight lang="mediawiki">
{{#invoke:Html|ZamianaDwukropkaNaKodHtml|tekst=subst:msg:Szablon:Nazwa_strony}}
</syntaxhighlight>
Wynikiem tego jest wartość, której odpowiada wartość zmiennej ukrytej pod nazwą {{Code|tekst2}} poniżej.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaDwukropkaNaKodHtml/}}.
== Inne funkcje kodujące ==
=== {{Śródtytuł|p.EncodeId}}{{Code|p.EncodeId}} ===
Funkcja służy do opcjonalnego dekodowania ciągów znakowych według: {{LinkŚródtytuł|p.DecodeHtml}}, i potem kodowania znakami '''HTML''' całego ciągu od specjalnych znaków, do tego celu do transformacji jest potrzebna funkcja: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeId(id,bez_transformacji)...end;
</syntaxhighlight>
Parametry nieramkowe normalne funkcji:
{{OpisParametrów
| 1 = {{Code|id}} | _1 = Ciąg do przeinaczenia.
| 2 = {{Code|bez_transformacji}} | _2 = Gdy nie {{Code|false}} lub {{Code|nil}}, funkcja nie transformuje na podstawie: {{LinkŚródtytuł|p.DecodeHtml}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeId/}}.
== Funkcje kodów ==
=== {{Śródtytuł|p.KodHTMLZnaku}}{{Code|p.KodHTMLZnaku}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodHTMLZnaku}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia zadany znak na kod dziesiętny '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodHTMLZnaku(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Zmienna, pod którym jesKodHTMLZnakut znak do zamiany na kod dziesiętny '''HTML'''.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}}, a znak {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodHTMLZnaku/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodHTMLZnaku}}.
=== {{Śródtytuł|p["KodyHTMLZnakówWikiCiągu"]}}{{Code|p["KodyHTMLZnakówWikiCiągu"]}} ===
==== Odpowiednik szablonowy ====
Odpowiednik szablonowy jest pod nazwą {{s|KodyHTMLZnakówWikiCiągu}}. Jego parametry są podobne do jego wersji bibliotecznej. Ten szablon wykorzystuje tę funkcję biblioteczną uruchamianą w ramce.
==== Funkcja biblioteczna ====
Zamienia ściśle określone znaki (zestaw kodów znajduje się na stronie: {{Code|{{ls2|KodyHTMLZnakówWikiCiągu/opis}}}}) na kody dziesiętne '''HTML''', wedle podanych parametrów lub po zamianie znak {{Code|{{Nowiki|&}}}} jest zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#}}}}.
Funkcja potrzebuje do wyszukiwania parametrów do działania, funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p["KodyHTMLZnakówWikiCiągu"](frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Ciąg, pod którym są możliwe ściśle określone znaki są zamieniane na kod '''HTML''', ciąg ten jest ze znakami wiki w UTF8.
| 2 = {{Code|2}} | _2 = Czy znak {{Code|{{Nowiki|&}}}} ma być zamieniany na {{Code|{{Nowiki|&}}}} i {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#}}}}.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/KodyHTMLZnakówWikiCiągu/}}.
==== Przykład kodu na stronie szablonu z przykładami na stronie ich opisów ====
Popatrz na wyniki szablonu: {{s|KodyHTMLZnakówWikiCiągu}}.
== Funkcje usuwania z tekstu zbędnych znaków ==
=== {{Śródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}{{Code|p.UsuwanieSpecjalnychNieschematycznychSymboli}} ===
Usuwa z tekstu znak numer {{Code|8206}} zestawu {{lpg|Unicode}}, który można napisać, jeśli jest widoczny na ekranie komputera {{Code|‎}} (znak {{Code|{{Nowiki|‎}}}}). Ten znak oczywiście Unicode jest w grupie zwanej invisible Unicode characters i służy do ustawiania kierunku tekstu lewo do prawo.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpecjalnychNieschematycznychSymboli(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr z ciągiem znakowym do operacji.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UsuwanieSpecjalnychNieschematycznychSymboli/}}.
== Funkcje specjalistyczne kodujące i do nich odwrotne ==
=== {{Śródtytuł|p.EncodeWiki}}{{Code|p.EncodeWiki}} ===
Funkcja transformuje kody '''HTML''' do znaku przy pomocy funkcji {{LinkŚródtytuł|p["TransformacjaKoduHtmlDoZnakuCiągu"]}}, usuwa nieschematyczne znaki o kodzie {{Code|{{Nowiki|‎}}}} dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie opcjonalnie usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu, i zamienia wewnątrz znaki kolejne odstępów lub dolnych myślników na jeden dolny myślnik na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}, dalej zaraz funkcja {{LzLua|mw.text.encode}} koduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy zakodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeWiki/}}.
=== {{Śródtytuł|p.DecodeWiki}}{{Code|p.DecodeWiki}} ===
Funkcja {{LzLua|mw.text.decode}} dekoduje tekst, tą funkcją {{lpg|Lua}} w {{lpr|Lua|Scribunto}}. Następnie usuwa nieschematyczne symbole: {{Code|{{Nowiki|‎}}}}, dzięki funkcji: {{LinkŚródtytuł|p.UsuwanieSpecjalnychNieschematycznychSymboli}}, następnie działa opcjonalnie funkcją, która usuwa znaki będące odstępami lub dolnymi myślnikami z początku i końca tekstu oraz zamieniając wewnątrz znaki kolejne odstępów lub dolnych myślników na jedną dolną spacją na podstawie {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeWiki(parametr,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Tekst, który chcemy odkodować,
| 2 = {{Code|czy_nie_odstepy}} | _2 = Czy nie ma na tekst podziałać funkcją {{Code|{{sr|#p["Odstępy"]|p=Parametry}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeWiki/}}.
=== {{Śródtytuł|p.IsEncodedHtml}}{{Code|p.IsEncodedHtml}} ===
Funkcja sprawdza, czy można uznać, że funkcja jest zakodowana, tzn. dalej nie warto jej kodować przy pomocy funkcji: {{LzLua|mw.uri.encode}}, czy dekodować, bo już można uznać ją za odkodowaną, czyli nie trzeba stosować funkcji: {{LzLua|mw.uri.decode}}. Funkcja zwraca wartość {{Code|true}}, jak można uznać tekst za zakodowany i {{Code|false}}, gdy jest niezakodowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IsEncodedHtml(parametr,encode,encode_real)..end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do sprawdzenia - wymagany.
| 2 = {{Code|encode}} | _2 = Gdy jest sprawdzana tylko obecność znaku {{Code|%}}.
| 3 = {{Code|encode_real}} | _3 = Gdy jest sprawdzana, nie tylko obecność znaku {{Code|%}}, też czy {{Code|parametr}} jest ciągiem podporządkowanym wyrażeniu regularnemu {{Code|<nowiki>^[%w%p%s]*$</nowiki>}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/IsEncodedHtml/}}.
=== {{Śródtytuł|p.EncodeHtml}}{{Code|p.EncodeHtml}} ===
Funkcja sprawdza, czy podany parametr do transformacji uznać za zakodowany, jeżeli za taki zostanie uznany, wtedy zostanie, to on zostanie potraktowany funkcją {{LinkŚródtytuł|p.EncodeWiki}}, a jeżeli nie to zostanie wywołana funkcja: {{lzLua|mw.uri.encode}} (z parametrem "WIKI").
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHtml(parametr,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do transformacji kodowania.
| 2 = {{Code|encode}} i {{Code|encode_real}} | _2 = Te parametry to samo oznaczają, co w funkcji: {{LinkŚródtytuł|p.IsEncodedHtml}},
| 3 = {{Code|czy_nie_odstepy}} | _3 = To samo oznacza, co w funkcji {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHtml/}}.
=== {{Śródtytuł|p.DecodeHtml}}{{Code|p.DecodeHtml}} ===
Funkcja sprawdza, czy {{Code|parametr}}, czy można uznać za zakodowany, a jeżeli można, to on zostanie w zależnosci od parametru {{Code|spacje}}, to odpowiednio zostanie wywołana {{LzLua|mw.uri.decode}}, a następnie w zależności od parametru (opis w parametrach) zostanie wywołana odpowiednia funkcja odkoduwująca lub kodująca {{Code|wiki}}. Jeżeli ciąg rzeczywiście jest uznany za niezakodowany jest podobnie odpowiednio z tylko z wywołaniami funkcji {{Code|wiki}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHtml(parametr,spacje,encode,encode_real,czy_nie_odstepy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = Parametr do odkodowania.
| 2 = {{Code|spacje}} | _2 = Gdy parametr odpowiada {{Code|true}} używa funkcji {{LinkŚródtytuł|p.DecodeWiki}}, w przeciwnym wypadku: {{LinkŚródtytuł|p.EncodeWiki}}, ale wpierw musi zostać wywołana funkcja {{LzLua|mw.uri.decode}} w przypadku, gdy ciąg zostanie uznany za zakodowany, jak to robi funkcja {{LzLua|mw.uri.encode}}.
| 3 = {{Code|encode}} i {{Code|encode_real}} | _3 = Te parametry są używane przez funkcje {{LinkŚródtytuł|p.IsEncodedHtml}},
| 4 = {{Code|czy_nie_odstepy}} | _4 = Gdy ciąg został uznany za niezakodowany, wtedy to jest drugi parametr funkcji: {{LinkŚródtytuł|p.DecodeWiki}} lub {{LinkŚródtytuł|p.EncodeWiki}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHtml/}}.
== Kody specjalne typowo tekstowe funkcji prostych i odwrotnych ==
=== {{Śródtytuł|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}}{{Code|p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml}} ===
Szuka atrybutów w cudzysłowach i w nich elementy {{Code|<nowiki><>&</nowiki>}} zamienia na kody dziesiętne '''HTML''', a także znaki lewego ukośnika {{Code|<nowiki>\</nowiki>}} też na to.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|znacznik}} | _1 = Atrybut do przetwarzania, aby w nim zamienić niektóre znaki, które przeszkadzają w analizie na kody, o odpowiednim formacie, '''HTML'''.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml/}}.
=== {{Śródtytuł|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}}{{Code|p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak}} ===
Zamienia kody '''HTML''', tzn.: {{Code|{{Nowiki|<}}}}, {{Code|{{Nowiki|>}}}} i {{Code|{{Nowiki|&}}}}, na odpowiednio znaki, a także elementy {{Code|{{Nowiki|\"}}}} na {{Code|<nowiki>\"</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|value}} | _1 = Parametr do transformacji niektórych kodów '''HTML''' na znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak/}}.
== Funkcje wydzielania części z adresów ==
=== {{Śródtytuł|p["NagłówekStronyAdresu"]}}{{Code|p["NagłówekStronyAdresu"]}} ===
Funkcja wydziela nagłówek z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NagłówekStronyAdresu"]=function(frame,czy_nie_dolne_myslniki,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_nie_dolne_myslniki}} | _2 = Gdy {{Code|true}}, jeśli w nagłówku nie ma prawa być dolnych myślników.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Funkcja usuwa zbędne odstępy i dolne myślniki na końcach nagłówka, i powtarzające się znaki będące odstępami lub dolnymi myślnikami są zastępowane przez jedną spację, gdy {{Code|czy_nie_dolne_myslniki}} równa jest wartości odpowiadającej {{Code|true}}, w przeciwnym wypadku zamieniana jest ona na jeden dolny myślnik.
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|z nie dolnymi z myślnikami}} lub {{Code|2}}, bądź drugi zwyły parametr funkcji {{Code|czy_nie_dolne_myslniki}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NagłówekStronyAdresu/}}.
=== {{Śródtytuł|p["ParametryStronyAdresu"]}}{{Code|p["ParametryStronyAdresu"]}} ===
Funkcja wydziela parametry z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["ParametryStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów adresu, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} |_3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ParametryStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyAdresu"]}}{{Code|p["NazwaStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z adresu strony, funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["NazwaStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z adresu strony, bez parametrów i nagłówka, wydzieloną z pełnego adresu strony.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = Tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź parametr drugi funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyAdresu/}}.
=== {{Śródtytuł|p["NazwaStronyZParametrówStronyAdresu"]}}{{Code|p["NazwaStronyZParametrówStronyAdresu"]}} ===
Funkcja wydziela nazwę strony z parametrów adresu strony.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
<syntaxhighlight lang="lua">
p["NazwaStronyZParametrówStronyAdresu"]=function(frame,czy_naprawiaj)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma suwać zbędne odstępy i dolne myślniki z parametrów strony adresu, i czy zamieniać je na pojedyncze spacje wewnątrz nazwy artykułu wydzieloną z parametrów strony.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|parametry}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/NazwaStronyZParametrówStronyAdresu/}}.
=== {{Śródtytuł|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}}{{Code|p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]}} ===
Funkcja poprawia pełny adres strony, rozdzielając ją na części, a później łącząc. Funkcja ma własną tabelę buforową nazw.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["PoprawAdresNagłówkaOrazParametrówStronyAdresu"]=function(frame,czy_naprawiaj,tabela_nazw_adresu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = tablica ramki funkcji tablicy transportu.
| 2 = {{Code|czy_naprawiaj}} | _2 = Parametr przedstawiający, czy ma naprawiać pełny adres strony, działając w sposób specyficzny w zależności od funkcji, która operuje na jej częściach, wykorzystując funkcje, które są napisane w linii zaraz poniżej.
| 3 = {{Code|tabela_nazw_adresu}} | _3 = tabela nazw zespołu funkcji, która obejmuje funkcje {{LinkŚródtytuł|p["NagłówekStronyAdresu"]}}, {{LinkŚródtytuł|p["ParametryStronyAdresu"]}} i {{LinkŚródtytuł|p["NazwaStronyAdresu"]}}.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|nazwa jednostki}}, {{Code|strona}} lub {{Code|1}} | _1 = Nazwa jednostki (strony), tzn. jego adres.
| 2 = {{Code|czy naprawiać}} lub {{Code|2}}, bądź drugi parametr funkcji: {{Code|czy_naprawiaj}} | _2 = Znaczą to samo, co pierwszy parametr w tym wierszu, który jest parametrem funkcji.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/PoprawAdresNagłówkaOrazParametrówStronyAdresu/}}.
== Funkcje stron ==
=== {{Śródtytuł|p.URLStrona}}{{Code|p.URLStrona}} ===
Funkcja z adresu '''URL''' wydziela nazwę serwera i nazwę strony. On nie może zawierać w sobie protokołu, tylko musi zaczynać od {{Code|<nowiki>//</nowiki>}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.URLStrona(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony.
| 2 = {{Code|ukośnik}} lub {{Code|2}} | _2 = Czy do nazwy strony ma wliczać ukośnik.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/URLStrona/}}.
=== {{Śródtytuł|p["UrlBezProtokołu"]}}{{Code|p["UrlBezProtokołu"]}} ===
Funkcja adresowi z protokołem usuwa to właśnie, a jak podamy adres „mail”, to podaje nazwę tego adresu, bez niego. Drugą zwracaną nazwą jest nazwa protokołu, a jak się nie da go wyznaczyć, to funkcja zwraca wartość {{Code|nil}}. Trzecia wartość, to numer sposobu, a jeżeli żaden sposób nie pasuje, to ta wartość jest {{Code|-1}}, a gdy adres mail {{Code|1}}, dla adresu z protokołem {{Code|2}}, a dla adresu bez protokołu {{Code|3}}.
Funkcja do zbierania parametrów ramki {{Code|frame}} używa funkcji: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p["UrlBezProtokołu"]=function(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|url}} lub {{Code|1}} | _1 = Adres strony, ewentualnie z opcjonalnym protokołem.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UrlBezProtokołu/}}.
== Funkcje kodujące i dekodujące ==
=== {{Śródtytuł|p.DecodeKoduHTMLZnaku}}{{Code|p.DecodeKoduHTMLZnaku}} ===
Zamienia kody '''HTML''', tzn. literowe (ogólny wzór {{Code|<nowiki>&(%a+);</nowiki>}}), dziesiętne (ogólny wzór {{Code|<nowiki>&#(%d+);</nowiki>}}) i szesnastkowe (ogólny wzór {{Code|<nowiki>&#x(%x+);</nowiki>}}) na odpowiednie znaki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeKoduHTMLZnaku(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do zamienienia z dziesiętnymi, szesnastkowymi i literowymi kodami '''HTML''' na odpowiednie znaki.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeKoduHTMLZnaku/}}.
=== {{Śródtytuł|p.ZamianaEncodeTekst}}{{Code|p.ZamianaEncodeTekst}} ===
Adres strony dekoduje funkcją: {{LzLua|mw.uri.decode}}, następnie koduje, jeszcze więcej niż było na samym początku, według: {{LzLua|w.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeTekst(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do odkodowania i zakodowania jeszcze więcej niż było na początku zakodowane.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeTekst/}}.
=== {{Śródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}{{Code|p.ZamianaEncodeNaPodstawieWzoruTekstu}} ===
Funkcja wyszukuje tekst do zamiany i działa na niego funkcją: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZamianaEncodeNaPodstawieWzoruTekstu(tekst,wzor,funkcja)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Zawartość, na którą działamy.
| 2 = {{Code|wzor}} | _2 = Części do podziałania tą funkcją.
| 3 = {{Code|funkcja}} | _3 = Funkcja, którą działamy na te części.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/ZamianaEncodeNaPodstawieWzoruTekstu/}}.
=== {{Śródtytuł|p.EncodePodstawoweHtmlTekstu}}{{Code|p.EncodePodstawoweHtmlTekstu}} ===
Funkcja blokuje odkodowywanie możliwych kodów '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, w tym celu wywoływana jest funkcja: {{LinkŚródtytuł|p.KodowanieOmijanieFunkcyjne}}, do omijania tego znaku, funkcja omija tylko znaki zapisane w kodach '''HTML''', tzn. {{Code|{{Nowiki|#}}}}, w tym celu wszystkie kody tego znaku zamieniamy na jeden, kolejno przed i po wywołaniem tej funkcji, funkcjami: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}} i {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Ta funkcja w pierwszym kroku, w nim we wspomnianej funkcji wywołanej w funkcji anonimowej, wywołuje funkcję dekodujące znaki, czyli: {{LinkŚródtytuł|p.DecodeKoduHTMLZnaku}}, do odkodowania kodów, '''HTML''', dziesiętnych, szesnastkowych i literowych. Po samym końcu kodowane są specjalne znaki na podstawie: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, na kody '''HTML'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodePodstawoweHtmlTekstu(elementy_adresu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Funkcja do podstawowego kodowania adresu.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodePodstawoweHtmlTekstu/}}.
=== {{Śródtytuł|p.EncodeElementyAdresuStrony}}{{Code|p.EncodeElementyAdresuStrony}} ===
Gdy mamy problem (przypadek) z parametrami adresu strony, wtedy do kodowania wywoływana jest funkcja {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a gdy posługujemy się właściwym adresem strony lub nagłówkiem, wtedy dekodujemy '''URL''' funkcją {{LzLua|mw.uri.decode}}, następnie {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, i jeżeli mały włączone kodowanie, następnie {{LzLua|mw.uri.encode}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeElementyAdresuStrony(elementy_adresu_strony,czy_parametry_strony,z_kodowaniem)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|elementy_adresu_strony}} | _1 = Element adresu strony.
| 2 = {{Code|czy_parametry_strony}} | _2 = Czy parametry strony rozważać, jako że wtedy jest taki adres jako parametry.
| 3 = {{Code|z_kodowaniem}} | _3 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeElementyAdresuStrony/}}.
== Funkcje operujące na kodach '''HTML''' znaków '''#''', zapisaną dziesiętnie, szesnastkowo lub literowo, na wersję pośrednią lub z ==
=== {{Śródtytuł|p.EncodeHashKoduHtmlTekstu}}{{Code|p.EncodeHashKoduHtmlTekstu}} ===
Funkcja koduje kod '''HTML''' znaku {{Code|<nowiki>#</nowiki>}}, czyli {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}}. Te wszystkie kody funkcja zamienia je z każdych na kod: {{Code|{{Nowiki|&num;}}}}. Funkcja zwraca przetworzony tekst, ze zmienną {{Code|ile}} mówiącej ile jest możliwych kodów na stronie, także z {{Code|ile2}} wskazującej, ile jest kodów na stronie rozwazanego znaku.
Funkcja używana, gdy nie chcemy, by dodatkowe znaki {{Code|<nowiki>#</nowiki>}} przeskadzały na rozkład adresu strony na właściwy adres, parametry i nagłówek strony, co po rozkładzie wywoływana jest jego też jego funkcja odwrotna {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}, a tak powstałe znaki {{Code|{{Nowiki|#}}}} ze wszystkich tych kodów {{Code|<nowiki>#</nowiki>}} według pewnych funkcji modułu {{Code|{{ld2|Html}}}}, że one nie zostaną odkodowane, bo są one pomijane przy analizie nagłówkowej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeHashKoduHtmlTekstu}}{{Code|p.DecodeHashKoduHtmlTekstu}} ===
Jeżeli dokonano zamiany możliwych kodów {{Code|{{Nowiki|#}}}}, {{Code|{{Nowiki|#}}}} i {{Code|{{Nowiki|#}}}} na {{Code|{{Nowiki|#num}}}}, wtedy druga zmienna z parametrów jest większa od zera, wtedy możliwa jest tego zamiana na kod {{Code|{{Nowiki|#}}}} z kodu {{Code|{{Nowiki|#num}}}}, używając tej funkcji.
Funkcja używana, gdy właściwy adres, parametry i nagłówek strony zostały po rozłączeniu na te części z pełnego adresu strony, wraz z innymi funkcjami odkodowującymi znaki niektóre '''HTML''', zostały wywołane w celu odkodowania różnych części zakodowanych wcześniej, oraz jeżeli ciało jej wersji prostej została wywołana wcześniej.
Funkcją odwrotną do tego w nagłówku ma nazwę: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeHashKoduHtmlTekstu(tekst,ile)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia,
| 2 = {{Code|ile}} | _2 = {{Code|<nowiki>ile>0</nowiki>}}, jeżeli dokonano możliwych zamian kodów znaku {{Code|<nowiki>#</nowiki>}} na {{Code|{{Nowiki|#num}}}}.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeHashKoduHtmlTekstu/}}.
== Fukcja operująca na znakach '''#''' w kodach '''HTML''' ==
=== {{Śródtytuł|p.EncodeTempHashKoduHtmlTekstu}}{{Code|p.EncodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeTempHashKoduHtmlTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeTempHashKoduHtmlTekstu/}}.
=== {{Śródtytuł|p.DecodeTempHashKoduHtmlTekstu}}{{Code|p.DecodeTempHashKoduHtmlTekstu}} ===
Jeżeli mamy jakieś kody '''HTML''', to aby one nie przeszkadzały w rozkładzie na właściwy adres, parametry i nagłówek strony, to te tam {{Code|<nowiki>#</nowiki>}} należy zamienić na {{Code|{{Nowiki|#}}}}. One tak zostały zamienione funkcją {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}}. Po rozłożeniu na trzy części pełnego adresu strony, tzn. na właściwy adres, parametry i nagłówek strony, możemy wywołać dla każdej z nich tę funkcję, wykonując operację odwrotną.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.DecodeTempHashKoduHtmlTekstu(tekst,ile1,ile2)...end;
</syntaxhighlight>
Parametry zwykłe funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do przetworzenia i po rozdzieleniu na trzy części.
| 2 = {{Code|ile1}} | _2 = Ile jest przetworzonych kodów dziesietnych prez funkcje do rozważanej prostej.
| 3 = {{Code|ile2}} | _3 = Ile jest przetworzonych kodów szesnastkowych przez funkcją do rozważanej prostej.
}}
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/DecodeTempHashKoduHtmlTekstu/}}.
== Funkcje rozdzielania na czyste adresy, ich parametry i nagłówki, oraz do nich funkcje odwrotne ==
=== {{Śródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.StronaParametryIdentyfikacjaAdresuHtml}} ===
Funkcja z całkowitego adresu składającego się z adresu właściwego, parametrów i nagłówka, rozdziela na trzy części, z których się składa.
Funkcja sprawdza, czy jakikolwiek kody '''HTML''' występują w pełnym adresie strony, jeżeli są, to przedtem koduje jeszcze lepiej kody znaków {{Code|<nowiki>#</nowiki>}}, przy pomocy funkcji: {{LinkŚródtytuł|p.EncodeHashKoduHtmlTekstu}}, a później w kodach '''HTML''' znak {{Code|<nowiki>#</nowiki>}} jest zamieniany na kod literowy '''HTML''', czyli: {{Code|{{Nowiki|#}}}}, funkcją: {{LinkŚródtytuł|p.EncodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody istnieją), wtedy coś powstaje w rodzaju dla kodu dziesiętnego: {{Code|<nowiki>&#(%d+);</nowiki>}}, i szesnastkowego: {{Code|<nowiki>&#x(%x+);</nowiki>}} - gdzie w nich {{Code|<nowiki>#</nowiki>}} został zamieniony na {{Code|{{Nowiki|#}}}}, które są przedstawione według wyrażeń regularnych {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
Funkcja rozdziela adres na trzy części, a później odkodowuje każdą część funkcją: {{LinkŚródtytuł|p.DecodeTempHashKoduHtmlTekstu}} (jeżeli w adresie kody w ogóle istniały), i podobnie później: {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}} (jeżeli kody znaku: {{Code|<nowiki>#</nowiki>}}, były wcześniej).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.StronaParametryIdentyfikacjaAdresuHtml(adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do potrzelenia na trzy części.
}}
Funkcja zwraca trzy wartości, tzn. adres właściwy (bez parametrów i nagłówka), parametry (używane jako dodatek do adresów przy formułowaniu formularzy) i nagłówek (który jest adresem na stronie do odpowiedniego elementu o danym atrybucie: {{Code|id}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/StronaParametryIdentyfikacjaAdresuHtml/}}.
=== {{Śródtytuł|p.TworzenieAdresuHtml}}{{Code|p.TworzenieAdresuHtml}} ===
Funkcja łączy, stronę, parametry i nagłówek strony, w pełną nazwę strony (adresu), dalej jest uruchamiana funkcja ddekodująca ciagi znakowe: {{Code|{{Nowiki|&#}}}}. Funkcja wykorzystuje do dekodowania tego {{LinkŚródtytuł|p.DecodeHashKoduHtmlTekstu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieAdresuHtml(strona,parametry,naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|strona}} | _1 = Normalny adres strony, bez parametrów i nagłówka,
| 2 = {{Code|parametry}} | _2 = Parametry strony w formacie {{Code|nazwa{{=}}wartość}} oddzielone od siebie znakiem {{Code|<nowiki>&</nowiki>}},
| 3 = {{Code|nagłówek}} | _3 = Nagłówek linkujący do {{Code|id}} jakiegos elementyna stronie,
}}
Funkcja zwraca całkowity adres z adresem właściwym, parametrami (po {{Code|<nowiki>?</nowiki>}}, jeżeli po nim występują wartości przyrównane nazwą zmiennych '''HTML''') i nagłówkiem (po {{Code|<nowiki>#</nowiki>}}).
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieAdresuHtml/}}.
== Specjalistyczne ogólne funkcje adresów ==
=== Funkcja kombajn adresów ===
==== {{Śródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}{{Code|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}} ====
Pełny adres strony, bezprotokolarny (lub protokolarny, jeżeli rozdzielimy, w pierwszej funkcji anonimowej w tej nagłówku, na protokół i adres bezprotokolarny, czyli na dwie części, zrobimy operacje, a później je złączymy w nim), linków zewnętrznych lub wewnętrznych, z adresem właściwym, parametrami (jeśli mechanizm {{NS|k=mw|m=tak|l=tak|pk=m}}, to uwzględnia) i nagłówkiem strony.
Adres dzielimy je na trzy części funkcją: {{LinkŚródtytuł|p.StronaParametryIdentyfikacjaAdresuHtml}}, następnie na każdą z tych elementów działamy odpowiednimi funkcjami, a potem ich wyniki łączymy w pełny adres strony funkcją: {{LinkŚródtytuł|p.TworzenieAdresuHtml}}.
Przy analizie adresów, właściwych, parametrów i nagłówków, funkcja z trzech funkcji strony, parametrów i nagłówka, w której w drugim parametrze jest procedura, należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów, jako ich drugi parametr.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TworzenieStronaParametryIdentyfikacjaAdresuHtml(adres,funkcja_strona,funkcja_parametry,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres do przetworzenia.
| 2 = {{Code|funkcja_strona}} | _2 = Funkcja, którą działamy na właściwy adres strony, bez parametrów i nagłówka.
| 3 = {{Code|funkcja_parametry}} | _3 = Funkcja, którą działamy na parametry adresu strony.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek strony adresu.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/TworzenieStronaParametryIdentyfikacjaAdresuHtml/}}.
=== Funkcje pośrednie oparte na kombajnie ===
==== {{Śródtytuł|p.EncodeParametryURL}}{{Code|p.EncodeParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi procedurami. Funkcja do tego wykorzystuje lub nie, ale ma to w definicji, funkcję: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
p.EncodeParametryURL(adres,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
*{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryURL/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryURL}}{{Code|p.EncodeZaawansowanyParametryURL}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie przy analizie tych trzech uzyskanych zmiennych parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodeSpecjalneZnakiHtml}}, ale przed nim wywoływana jest funkcja: {{LzLua|mw.uri.decode}}, a po nim: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryURL(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryURL/}}.
==== {{Śródtytuł|p.EncodeParametryHtml}}{{Code|p.EncodeParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje {{LinkŚródtytuł|p.EncodeHtml}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, to jest robione przy pomocy: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeParametryHtml(parametr,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|w_adresie}} | _2 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 3 = {{Code|funkcja_strona}} | _3 = Funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 4 = {{Code|funkcja_naglowek}} | _4 = Funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeParametryHtml/}}.
==== {{Śródtytuł|p.EncodeZaawansowanyParametryHtml}}{{Code|p.EncodeZaawansowanyParametryHtml}} ====
Funkcja przystosowana do analizy adresu, tzn. przede wszystkim adresów bezprotokolarnych (lub protokolarnych, jeżeli rozdzielimy to na protokół i adres bezprotokolarny, czyli na dwie części, według pierwszej funkcji w tym nagłówku, zrobimy operacje, a później je złączymy) linków zewnętrznych i wewnętrznych, pełnego strony ze specjalistycznym analizatorem parametrów adresu.
Funkcja właściwy adres strony i nagłówek działa odpowiednimi funkcjami, jest to robione wewnwętrz funkcji: {{LinkŚródtytuł|p.TworzenieStronaParametryIdentyfikacjaAdresuHtml}}.
Funkcja też może też służyć do analizy tylko parametrów, jeżeli drugi parametr jest {{Code|false}} lub {{Code|nil}}, a jeżeli wartość odpowiada wartości logicznej {{Code|true}}, to trzeba rozpatrywać pełne adresy stron protokolarne, czy nie, omówione na początku w tym rozdziale.
Przy analizie nazw i wartości parametrów wykorzystuje: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}, a przed nim wywoływana jest: {{LzLua|mw.uri.decode}}, a po nim jeżeli jest włączone kodowanie w zmiennej drugiej funkcji, wtedy: {{LzLua|mw.uri.encode}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.EncodeZaawansowanyParametryHtml(adres,z_kodowaniem,w_adresie,funkcja_strona,funkcja_naglowek)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Pełny adres strony z parametrami i nagłówkiem.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|w_adresie}} | _3 = Czy rozpatrywać cały adres, a nie tylko parametry.
| 4 = {{Code|funkcja_strona}} | _4 = funkcja, którą działamy na adres właściwy strony, bez parametrów i nagłówka.
| 5 = {{Code|funkcja_naglowek}} | _5 = funkcja, którą działamy na nagłówek.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/EncodeZaawansowanyParametryHtml/}}.
=== Specjalistyczne szczególne funkcje adresów ===
==== {{Śródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}{{Code|p.AdresDomniemanieBezProtokolarnyEncodeURL}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeParametryURL}}. Główną funkcją kodującą jej jest: {{LinkŚródtytuł|p.ZamianaEncodeTekst}}.
Funkcja rozdziela adres, napisany bez nagłówka i parametrów, na protokół i adres bezprotolarny, w celu jego zakodowania funkcją: {{LinkŚródtytuł|p["UrlBezProtokołu"]}}. Ona domyślnie koduje adres bezprotokolarny, a z podaniem drugiej wartości {{Code|true}} protokolarny. Funkcja do tego celu wykorzystuje funkcję {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}, ado tego celu przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresDomniemanieBezProtokolarnyEncodeURL(adres,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|adres}} | _1 = Adres do zakodowania.
| 2 = {{Code|protokolarny}} | _2 = Czy ma rozkładać adres na nazwę strony i protokół.
}}
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresDomniemanieBezProtokolarnyEncodeURL/}}.
==== {{Śródtytuł|p.AdresProjektuEncodeHtml}}{{Code|p.AdresProjektuEncodeHtml}} ====
Funkcja korzysta z kombajna z funkcji: {{LinkŚródtytuł|p.EncodeZaawansowanyParametryHtml}}, a w niej do dekodowania na samym początku '''URL''' {{LzLua|mw.uri.decode}}, a na końcu {{LzLua|mw.uri.encode}}, jeżeli jest włączone kodowanie, między czasie korzysta z: {{LinkŚródtytuł|p.EncodePodstawoweHtmlTekstu}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Dla adresu, bez części parametrowej i nagłówkowej, operacje są robione, oprócz znaków {{Code|/}}.
Przy analizie adresów właściwych i nagłówków funkcja, z dwóch funkcji strony i nagłówka, w której w drugim parametrze jest wbudowana procedura, których należy opcjonalnie skorzystać, będąca algorytmem wbudowanym w funkcję do przetwarzania tych adresów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AdresProjektuEncodeHtml(frame,z_kodowaniem,protokolarny)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji tablicy transportu modułu.
| 2 = {{Code|z_kodowaniem}} | _2 = Czy ostateczny tekst przetworzony przed nim ma być podany do zakodowania.
| 3 = {{Code|protokolarny}} | _3 = Czy uważać przy kodowaniu na protokoły pełnych adresów stron.
}}
Parametry tablicy ramki {{Code|frame}} funkcji tabeli transportu modułu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres do kodowania.
| 2 = {{Code|encode}} | _2 = Czy kodować.
}}
Funkcja wyszukuje parametry w ramce funkcji tablicy transportu, dziecka lub rodzica, lub w tablicy o kluczach parametrze o takiej samej nazwie, a nawet w zmiennej tekstowej, według: {{LinkZobaczTeż|schemat parametrów funkcji|}}, a te nazwy tych parametrów są w tabelce. Też jest tam przedstawiony schemat ważności parametrów.
===== Przykład kodu na stronie modułów z przykładami na stronie ich opisów =====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/AdresProjektuEncodeHtml/}}.
== Wykorzystanie szczególnych funkcji adresów ==
=== {{Śródtytuł|p.UriEncode}}{{Code|p.UriEncode}} ===
Funkcja do kodowania adresów tylko z protokołem, wartości bez protokołu nie obsługuje. Wykorzystuje {{LinkŚródtytuł|p.AdresDomniemanieBezProtokolarnyEncodeURL}}. A przy rozdzielaniu poziomów korzysta z: {{LinkŚródtytuł|p.ZamianaEncodeNaPodstawieWzoruTekstu}}.
Do wyszukiwania adresów jest brana funkcja: {{Code|{{sr|#p.PobierzParametr|p=Parametry}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UriEncode(frame)...end;
</syntaxhighlight>
Parametry tablicy ramki tablicy transportu:
{{OpisParametrów
| 1 = {{Code|html}} | _1 = Adres z protokołem strony.
}}
Jeżeli zawartością jednego parametru funkcji nie jest ramka, tylko inny parametr, który jest tekstem, wtedy to jest ten sam parametr, co {{Code|html}}.
==== Przykład kodu na stronie modułów z przykładami na stronie ich opisów ====
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/Html/UriEncode/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1dhr0k5yh9jyzzlsm4fpkm7o0hmd3gv
Moduł:StronicowyParser/SzablonyTekstu
828
63668
557765
557404
2026-09-27T11:13:50Z
Persino
2851
557765
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu[klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
gy148x2rlzfbg47070utizim101kmxh
557767
557765
2026-09-27T11:18:30Z
Persino
2851
557767
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
g3lx6cfyvph8tburmbc52ub5q3xgfwc
557769
557767
2026-09-27T11:20:37Z
Persino
2851
557769
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
gscupuj9pjmsv6xt1rda1bv1qptw8ux
557771
557769
2026-09-27T11:48:18Z
Persino
2851
557771
Scribunto
text/plain
local p={};
p.PreparowanieSzablonoweLinkoweSzablonuTekstu=function(tekst,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
--if(true)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane;
local numerowane_obiekty=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local nienumerowane_obiekty_napisu_wprowadzenia_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local nienumerowane_obiekty_tekstu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
tablica_analizy_obiektow_strony_dany_modul=tablica_analizy_obiektow_strony_dany_modul or __tablica_analizy_obiektow_strony_dany_modul;
tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or __tablica_danych_parametrow_szablonu_strony;
----
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
--if(true)then return nil,true;end;
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(__tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(szablony_tekstu[nazwa_szablonu])then
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
tabela_parametrow_szablonu=tabela_parametrow_szablonu or __tabela_parametrow_szablonu;
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
local klucz=mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%|.*%}%}%}$") or mw.ustring.match(szablon,"^%{%{%{%s*klucz(%d*)%s*%}%}%}$");
if(klucz)then
if((klucz=="")or(mw.ustring.match(klucz,"^[1-9]%d*$")))then
local wartosc_klucz=tabela_parametrow_szablonu["klucz"..klucz];
wartosc_klucz=wartosc_klucz and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(wartosc_klucz,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true,true) or wartosc_klucz;
if(wartosc_klucz)then return wartosc_klucz;end;
end;
end;
end;
return nil,true;
end);
local tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,__tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(numerowane_obiekty[nazwa_szablonu])
or(nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu])
or(nienumerowane_obiekty_tekstu[nazwa_szablonu])
)then
local uchwyt=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[2];
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[3];
uchwyt=uchwyt and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or uchwyt;
nazwa_artykulu=nazwa_artykulu and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_artykulu,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_artykulu;
nazwa_ksiazki=nazwa_ksiazki and stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(nazwa_ksiazki,nil,nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,true,true) or nazwa_ksiazki;
tabela_parametrow_szablonu["uchwyt"]=uchwyt;tabela_parametrow_szablonu[1]=nil;
tabela_parametrow_szablonu["nazwa artykułu"]=nazwa_artykulu;tabela_parametrow_szablonu[2]=nil;
tabela_parametrow_szablonu["nazwa książki"]=nazwa_ksiazki;tabela_parametrow_szablonu[3]=nil;
local szablon=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,false);
__tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
__tablica_danych_parametrow_szablonu_strony[1][kod].parametry=nil;
end;
return nil;
end);
end;
return nil,true;
end);
end;
end);
end;
return nil,true;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(poziom_iteracji>0)then
return nil;
end;
return szablon;
end);
return tekst;
end;
function p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu)
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
return tekst;
end;
function p.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu)
return tabela_parametrow_szablonu["bez preprocess"];
end;
function p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
end;
function p.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany)
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa,},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
end;
end;
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2][1];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local __obiekt=(pozycja[3] or {})[2];
local __kod=(pozycja[3] or {})[3];
local __szablon=__tablica_analizy_obiektow_strony_dany_modul[__obiekt][__kod];
local szablonowe_modul=require("Module:Szablonowe");
local tekst_szablon=p.PreparowanieSzablonoweLinkoweSzablonuTekstu(szablonowe_modul.NormaKoduKodowaniaTekstu(__obiekt,__kod),nazwa_modulu_aktualna_czy_biezaca_szablonowa,__tablica_analizy_obiektow_strony_dany_modul,__tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
local __tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=p.ParametrTekstowySzablonuTekstu(__tabela_parametrow_szablonu);
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local TempFunc=function(tablica_danych_parametrow_szablonu_strony,kod)
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
local stara_tabelka=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
local nowa_tabelka=parametry_modul.TypeTable(stara_tabelka) and parametry_modul["KopiujRekurencyjnieTabelęElementów"](stara_tabelka) or stara_tabelka;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=nowa_tabelka;
end;
end;
end;
TempFunc(tablica_danych_parametrow_szablonu_strony,kod);
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tabela_parametrow_szablonu,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=p.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
local ___tabela_parametrow_szablonu;
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,___tabela_parametrow_szablonu,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
___tabela_parametrow_szablonu=tabela_parametrow_szablonu;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
b20rms9jiyatkb9mw5tabvjvci0k18n
Szablon:OpisParametrów
10
64146
557701
556611
2026-09-27T00:43:36Z
Persino
2851
557701
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:OpisParametrów/styles.css" />
{| class="wikitable OpisParametrów {{{klasa|}}}" {{#if:{{{styl|}}}|style="{{{styl|}}}"}}<!--
|+
<div class="OpisParametrów-tytuł">Parametry szablonu lub ramki, bądź funkcji bibliotecznej.</div>-->
|-
!{{!}} Lp.
! {{#if:{{{klasa|}}}|class="{{{klasa}}}"}} {{#if:{{{styl|}}}|style="{{{styl}}}"}} {{!}} Parametr
! {{!}} Opis
{{#invoke:Ramka|Powtarzaj|nie rozwiń=|
{{!}}- <!--
-->{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}<!--
-->class{{=}}"OpisParametrów-{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{!}}nagłówek{{!}}komórka{{))}} {{(((}}klasa wiersza{{((}}_{{))}}{{!}}{{)))}}"{{!}}<!--
-->{{((}}#if:{{(((}}klasa wiersza{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}klasa wiersza{{((}}_{{))}}{{)))}}"{{))}}<!--
-->{{))}} <!--
-->{{((}}#if:{{(((}}styl wiersza{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}styl wiersza{{((}}_{{))}}{{)))}}"{{))}}
{{!}}{{!}} <div>{{((}}_{{))}}</div>
{{((}}#if:{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{((}}!{{))}}{{!}}!{{))}} {{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}colspan{{=}}"2"{{))}} <!--
--> {{((}}#if:{{(((}}styl parametru{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}styl parametru{{((}}_{{))}}{{)))}}"{{))}} <!--
--> {{((}}#if:{{(((}}klasa parametru{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}klasa parametru{{((}}_{{))}}{{)))}}"{{))}} <!--
-->{{!}}<div>
{{(((}}{{((}}_{{))}}{{)))}}</div>
{{((}}#if:{{(((}}nagłówek{{((}}_{{))}}{{!}}{{)))}}{{(((}}komórka{{((}}_{{))}}{{!}}{{)))}}{{!}}{{!}}<!--
-->{{((}}!{{))}} <!--
--> {{((}}#if:{{(((}}styl wartości{{((}}_{{))}}{{!}}{{)))}}{{!}}style{{=}}"{{(((}}styl wartości{{((}}_{{))}}{{)))}}"{{))}} <!--
--> {{((}}#if:{{(((}}klasa wartości{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}klasa wartości{{((}}_{{))}}{{)))}}"{{))}} <!--
--> {{((}}!{{))}} <div>
{{(((}}_{{((}}_{{))}}{{)))}}</div><!--
-->{{))}}<!--
-->}}
|}{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Ramka|Rozwiń|{{((}}#invoke:Sprawdź{{!}}Parametry{{!}}{{=}}problemy-w-szablonie-%s {{((}}(({{))}}Kategoria{{((}}!{{))}}Szablon %s do sprawdzenia{{((}})){{))}}{{!}}klasa{{=}}{{!}}styl{{=}}{{#invoke:Ramka|Powtarzaj|po kolei=tak|nie rozwiń=tak|{{!}}{{((}}_{{))}}{{=}}txt!{{!}}styl parametru{{((}}_{{))}}{{=}}{{!}}klasa parametru{{((}}_{{))}}{{=}}{{!}}styl wartości{{((}}_{{))}}{{=}}{{!}}klasa wartości{{((}}_{{))}}{{=}}{{!}}styl wiersza{{((}}_{{))}}{{=}}{{!}}klasa wiersza{{((}}_{{))}}{{=}}{{!}}nagłówek{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};komórka{{((}}_{{))}}{{!}}komórka{{((}}_{{))}}{{=}}txt?;_{{((}}_{{))}};nagłówek{{((}}_{{))}}{{!}}_{{((}}_{{))}}{{=}}txt?!;nagłówek{{((}}_{{))}};komórka{{((}}_{{))}}}}{{))}}
}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
8s5t024qp1qqde23y32imng0jc6fvvy