Moduł:Przypisy
Moduł techniczny do obsługi szablonów {{przypisy}} i {{uwagi}}.
Przypisy
Funkcja generująca sekcję lub treść sekcji przypisów lub uwag.
Parametry
Pole | Do czego służy? | {{Przypisy}} | {{Uwagi}} |
---|---|---|---|
przypisy z parametrami | Wyrażenie regularne do wykrywania nagłówka sekcji przed wywołanym szablonem z parametrami | ===?%s*Przypisy%s*===?%s+{{((}}%s*[Pp]rzypisy%s*{{!}} .
|
===?%s*Uwagi%s*===?%s+{{((}}%s*[Uu]wagi%s*{{!}} .
|
przypisy bez parametrów | Wyrażenie regularne do wykrywania nagłówka sekcji przed wywołanym szablonem bez parametrów | ===?%s*Przypisy%s*===?%s+{{((}}%s*[Pp]rzypisy%s*{{))}} .
|
===?%s*Uwagi%s*===?%s+{{((}}%s*[Uu]wagi%s*{{))}} .
|
grupa przypisów z parametrami | Wyrażenie regularne do wykrywania nagłówka sekcji przed wywołanym szablonem z parametrami | ===?%s*Grupa przypisów%s*===?%s+{{((}}%s*[Pp]rzypisy%s*{{!}} .
|
===?%s*Grupa uwag%s*===?%s+{{((}}%s*[Pp]rzypisy%s*{{!}} .
|
grupa przypisów bez parametrów | Wyrażenie regularne do wykrywania nagłówka sekcji przed wywołanym szablonem bez parametrów | ===?%s*Grupa przypisów%s*===?%s+{{((}}%s*[Pp]rzypisy%s*{{))}} .
|
===?%s*Grupa uwag%s*===?%s+{{((}}%s*[Pp]rzypisy%s*{{))}} .
|
nagłówek przypisów | Nagłówek sekcji, przy nie ustawionej zmiennej: group lub o nazwie pustej, w rodzicu, do wstawienia, jeśli nie zostanie wykryty za pomocą podanego wyrażenia regularnego
|
== Przypisy ==
|
== Uwagi ==
|
nagłówek grupy przypisów | Nagłówek sekcji, przy ustawionej zmiennej: group lub o nazwie pustej w rodzicu, do wstawienia, jeśli nie zostanie wykryty za pomocą podanego wyrażenia regularnego
|
== Grupa przypisów ==
|
== Grupa uwag ==
|
kategoria przypisów do sprawdzenia | Link do kategorii błędu dodawanej jeśli wykryte zostanie użycie nieudokumentowanego pola w szablonie. | [[Kategoria:Szablon:Przypisy %s do sprawdzenia]]
|
[[Kategoria:Szablon:Uwagi %s do sprawdzenia]]
|
kategoria grupy przypisów do sprawdzenia | Link do kategorii błędu dodawanej jeśli wykryte zostanie użycie nieudokumentowanego pola w szablonie. | [[Kategoria:Szablon:Grupa przypisów %s do sprawdzenia]]
|
[[Kategoria:Szablon:Grupa uwag %s do sprawdzenia]]
|
kategoria przepisów z oczekiwanym nagłówkiem | Link do kategorii jest, jeśli są przypisy (uwagi) z oczekiwanym nagłówkiem. | [[Kategoria:Szablon:Przypisy %s z oczekiwanym nagłówkiem]]
|
[[Kategoria:Szablon:Uwagi %s z oczekiwanym nagłówkiem]]
|
kategoria przepisów bez oczekiwanego nagłówka | Link do kategorii jest, jeśli są przypisy (uwagi) bez oczekiwanego nagłówka. | [[Kategoria:Szablon:Przypisy %s bez oczekiwanego nagłówka]]
|
[[Kategoria:Szablon:Uwagi %s bez oczekiwanego nagłówka]]
|
kategoria grupy przepisów z oczekiwanym nagłówkiem | Link do kategorii jest, jeśli są grupy przypisów (uwag) z oczekiwanym nagłówka. | [[Kategoria:Szablon:Grupy przypisów %s z oczekiwanym nagłówkiem]]
|
[[Kategoria:Szablon:Grupy uwag %s z oczekiwanym nagłówkiem]]
|
kategoria grupy przepisów bez oczekiwanego nagłówka | Link do kategorii jest, jeśli są grupy przypisów (uwag) bez oczekiwanego nagłówka. | [[Kategoria:Szablon:Grupy przypisów %s bez oczekiwanego nagłówka]]
|
[[Kategoria:Szablon:Grupy uwag %s bez oczekiwanego nagłówka]]
|
grupa | Domyślna nazwa grupy przypisów. | Brak | uwaga
|
Błędy
Błędy należy zgłaszać na stronie Wikibooks:Kwestie techniczne.
Powyższy opis jest dołączany ze strony Moduł:Przypisy/opis. (edytuj | historia)
Zobacz podstrony tego modułu. |
return {
["Przypisy"] = function(frame)
--mw.logObject(frame:getParent():getTitle(), "parent:title")
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local pudelko_modul=require("Module:Pudełko");
local pf=parametry_modul.PobierzFrameEwentualnieParent(frame);
local nazwa_przestrzeni_nazw=pudelko_modul["Nazwa przestrzeni nazw 2"](frame);
local nazwa_jednostki=pudelko_modul["Nazwa jednostki 2"](frame);
local uchwyt_strony=mw.title.makeTitle(nazwa_przestrzeni_nazw,nazwa_jednostki);
uchwyt_strony=((uchwyt_strony)and(uchwyt_strony.exists))and uchwyt_strony or mw.title.getCurrentTitle();
local typ_jednostki=pudelko_modul["Typ jednostki 2"]{args={
["obsługiwane jednostki jako nieopisowe strony"]="tak",
["nazwa przestrzeni nazw"]=uchwyt_strony.nsText,
["nazwa jednostki"]=uchwyt_strony.text,
},};
local typ_strony_w_nawiasach;
if(typ_jednostki=="artykuł")then
typ_strony_w_nawiasach="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
typ_strony_w_nawiasach="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
typ_strony_w_nawiasach="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
typ_strony_w_nawiasach="(strony brudnopisu projektu)";
else
typ_strony_w_nawiasach="(strony niepodręcznikowe)";
end;
local result = {}
local wzor_przypisow_do_sprawdzenia = frame.args["przypisy z parametrami"];
local wzor_przypisow_bez_parametrow = frame.args["przypisy bez parametrów"] or wzor_przypisow_do_sprawdzenia;
local wzor_grupy_przypisow_z_parametrami = frame.args["grupa przypisów z parametrami"];
local wzor_grupy_przypisow_bez_parametrow = frame.args["grupa przypisów bez parametrów"] or wzor_grupy_przypisow_z_parametrami
local naglowek_przypisow = frame.args["nagłówek przypisów"];
local naglowek_grupy_przypisow = frame.args["nagłówek grupy przypisów"];
local kategoria_przypisow_do_sprawdzenia = (frame.args["kategoria przypisów do sprawdzenia"])and string.format(frame.args["kategoria przypisów do sprawdzenia"],typ_strony_w_nawiasach) or nil;
local kategoria_grupy_przypisow_do_sprawdzenia = (frame.args["kategoria grupy przypisów do sprawdzenia"])and string.format(frame.args["kategoria grupy przypisów do sprawdzenia"],typ_strony_w_nawiasach) or nil;
local kategoria_przypisow_z_oczekiwanym_naglowkiem = (frame.args["kategoria przepisów z oczekiwanym nagłówkiem"])and string.format(frame.args["kategoria przepisów z oczekiwanym nagłówkiem"],typ_strony_w_nawiasach) or nil;
local kategoria_przypisow_bez_oczekiwanego_naglowkiem = (frame.args["kategoria przepisów bez oczekiwanego nagłówka"])and string.format(frame.args["kategoria przepisów bez oczekiwanego nagłówka"],typ_strony_w_nawiasach) or nil;
local kategoria_grupy_przypisow_z_oczekiwanym_naglowkiem = (frame.args["kategoria grupy przepisów z oczekiwanym nagłówkiem"])and string.format(frame.args["kategoria grupy przepisów z oczekiwanym nagłówkiem"],typ_strony_w_nawiasach) or nil;
local kategoria_grupy_przypisow_bez_oczekiwanego_naglowka = (frame.args["kategoria grupy przepisów bez oczekiwanego nagłówka"])and string.format(frame.args["kategoria grupy przepisów bez oczekiwanego nagłówka"],typ_strony_w_nawiasach) or nil;
local defaultGroup = frame.args["grupa"]
local hasIgnoredFields = false
-- grupa przekazywana w polu o pustej nazwie
-- aby docelowo zwolnić wszystkie nazwy na przypisy
local group = pf.args[""]
if group and string.match(group, "^=*$") then
-- z wyjątkiem błednych wywołań w stylu "=="
hasIgnoredFields = true
group = nil
end
-- alternatywnie do czasu przebotowania z pola o nazwie "grupa"
if not group then
group = pf.args["grupa"]
if group and (#group == 0) then
group = nil
end
end
local parametry_modul=require("Module:Parametry");
local function missingHeader(pattern, naglowek_przypisow_lub_grupy_przypisow,czy_bez_parametrow)
local stronicowyparser_modul=require("Module:StronicowyParser");
local spreparowany_wikikod_strony=stronicowyparser_modul.SpreparowanyWikikodStrony(uchwyt_strony.fullText,true);
---mw.log(tekst_rozwinietej_strony);
local czy_dopasowano_wedlug_wzorca;
local szablon=frame.args["szablon"];
if(not parametry_modul.CzyTak(szablon))then
czy_dopasowano_wedlug_wzorca=mw.ustring.match(spreparowany_wikikod_strony, pattern);
else
local szablonowe_modul=require("Module:Szablonowe")
czy_dopasowano_wedlug_wzorca=parametry_modul.CzyTak(szablonowe_modul["SprawdzanieCzyWystępujeDanySzablonWTekście"]{["tekst"]=spreparowany_wikikod_strony,["wzór"]=pattern,["szablon"]=szablon,["z parametrami"]=not czy_bez_parametrow,});
end;
return
pattern -- wymagany wzór na wyszukiwanie wywołania z nagłówkiem
and naglowek_przypisow_lub_grupy_przypisow-- wymagany nagłówek do wstawienia
and pattern~="" --wyrażenie regularne do sprawdzania, czy występują oczekiwane niepuste nagłówki sekcji
and naglowek_przypisow_lub_grupy_przypisow~="" --wstawiany nagłówek sekcji, gdy nie ma oczekiwanych niepustych nagłówków
and not czy_dopasowano_wedlug_wzorca;
end
--mw.logObject(pattern, "pattern")
local args=pf.args;
local ze_zwracanymi_kategoriami=not parametry_modul.CzyTak{[1]=args["bez kategorii"],};
local function cat(kategoria_przypisow_lub_grupy_przepisow_z_oczekiwanym_naglowkiem, kategoria_przypisow_lub_grupy_przypisow_bez_oczekiwanego_naglowka)
local sprawdz_modul=require("Module:Sprawdź");
local czy_bez_parametrow=sprawdz_modul["bez parametrów"](frame);
local pattern=czy_bez_parametrow and ((not group)and wzor_przypisow_bez_parametrow or wzor_grupy_przypisow_bez_parametrow) or ((not group)and wzor_przypisow_do_sprawdzenia or wzor_grupy_przypisow_z_parametrami)
local naglowek_przypisow_lub_grupy_przypisow=(((not group)and(naglowek_przypisow)) or (group and(naglowek_grupy_przypisow)))
if missingHeader(pattern,naglowek_przypisow_lub_grupy_przypisow,czy_bez_parametrow) then
if((not args["stopień nagłówka"])or((args["stopień nagłówka"])and(mw.ustring.find(args["stopień nagłówka"],"^=+$"))))then
table.insert(result, naglowek_przypisow_lub_grupy_przypisow)
table.insert(result, "\n")
end;
if ze_zwracanymi_kategoriami then
if(parametry_modul.CzyTak(kategoria_przypisow_lub_grupy_przypisow_bez_oczekiwanego_naglowka))then
table.insert(result,frame:preprocess(kategoria_przypisow_lub_grupy_przypisow_bez_oczekiwanego_naglowka))
end;
end;
elseif ze_zwracanymi_kategoriami then
if(parametry_modul.CzyTak(kategoria_przypisow_lub_grupy_przepisow_z_oczekiwanym_naglowkiem))then
table.insert(result,frame:preprocess(kategoria_przypisow_lub_grupy_przepisow_z_oczekiwanym_naglowkiem))
end;
end;
end
if(not group)then
cat(kategoria_przypisow_z_oczekiwanym_naglowkiem,kategoria_przypisow_bez_oczekiwanego_naglowkiem)
elseif(group~="")then
cat(kategoria_grupy_przypisow_z_oczekiwanym_naglowkiem,kategoria_grupy_przypisow_bez_oczekiwanego_naglowka)
end
table.insert(result, '<div class="do-not-make-smaller refsection')
if group or defaultGroup then
local groupClass, _ = (group or defaultGroup) == "uwaga" and "uwagi" or string.gsub(group or defaultGroup, ' ', '_')
table.insert(result, " refsection-")
table.insert(result, groupClass)
end
table.insert(result, '">')
-- to jest lista powszechnie występujących pól
-- w wywołaniach szablonów przypisów i/lub uwag
local exceptions = {
"", -- to jest docelowo jedyne wyjątkowe pole
"colwidth", -- kopia z enwiki?
"group", -- kopia z enwiki?
"grupa",
"poziom",
"przypis",
"przypisy",
"Przypisy",
"refs", -- kopia z enwiki?
"status",
"stopien",
"stopień",
"Stopień",
"stopnień",
"uwagi",
}
local parametry_niepotrzebne_w_przypisach={
---- parametry pudełka
["nazwa jednostki"]=true,
["nazwa przestrzeni nazw"]=true,
---- parametry kategorii
["bez kategorii"]=true,
---- parametry szablonu [[Szablon:Przypisy-lista]]
["liczba kolumn"]=true,
}
local ignore = {}
for i, v in ipairs(exceptions) do
ignore[v] = true
end
local contents = {}
for k, v in pairs(args) do
if (type(k) == "number") and (k == 1) then
--mw.logObject( {k, v}, "pole {{{1}}} puste lub z przypisami w stylu <ref name=...>")
table.insert(contents, v)
elseif(k=="stopień nagłówka")then
-- gdy poziom nagłówka oznaczany przez parametr w szablonie: stopień nagłówka
if(not string.match(v,"^=+$"))then
-- wchodzę, gdy wartość parametru stopień nagłówka nie składa się z samych równości lub nie jest wartością pustą
hasIgnoredFields=true;
end;
elseif(parametry_niepotrzebne_w_przypisach[k])then
elseif ignore[k] then
-- !!! TO WYŁĄCZĘ PO PRZEBOTOWANIU !!!
hasIgnoredFields = k ~= "";
-- pole ignorowane
--mw.logObject( {k, v}, "ignorowane pole z potencjalnymi przypisami w stylu <ref name=...>")
table.insert(contents, v)
elseif (type(k) == "string") then
-- pole podanej nazwie tłumaczymy na przypis o takiej samej nazwie
local ref = frame:extensionTag('ref', v, {name=k, group=group or defaultGroup})
--mw.logObject( {k, v, ref}, "indywidualny przypis")
table.insert(contents, ref)
else
-- pole indeksowane
--mw.logObject( {k, v}, "indeksowane pole z potencjalnymi przypisami w stylu <ref name=...>")
table.insert(contents, v)
hasIgnoredFields = true
end
end
local references = frame:extensionTag('references', table.concat(contents), {group=group or defaultGroup, responsive="1"})
table.insert(result, references)
table.insert(result, '</div>')
if ze_zwracanymi_kategoriami and hasIgnoredFields and parametry_modul.CzyTak(kategoria_przypisow_do_sprawdzenia and kategoria_przypisow_do_sprawdzenia) then
--mw.logObject({hasIgnoredFields, category}, "hasIgnoredFields and category")
if(not group)then
table.insert(result, frame:preprocess(kategoria_przypisow_do_sprawdzenia))
else
table.insert(result, frame:preprocess(kategoria_grupy_przypisow_do_sprawdzenia))
end
end
--mw.logObject(table.concat(result), "result")
return table.concat(result)
end,
}