Moduł:Przypisy
Ten szablon jest używany na wielu stronach Aby uniknąć uszkodzenia szablonu wszystkie eksperymenty należy przeprowadzać w swoim brudnopisie lub na stronach testowych. Przetestowane zmiany powinny być dodawane w jednej edycji. Osoba dokonująca zmian w tym szablonie powinna być przygotowana do naprawienia niepożądanych efektów ubocznych swoich działań. |
Moduł techniczny do obsługi szablonów {{przypisy}} i {{uwagi}}.
Przypisy
edytuj
Funkcja generująca sekcję lub treść sekcji przypisów lub uwag.
parametry
edytujPole | Do czego służy? | {{Przypisy}} | {{Uwagi}} |
---|---|---|---|
kategoria | Link do kategorii błędu dodawanej jeśli wykryte zostanie użycie nieudokumentowanego pola w szablonie. | [[Kategoria:Szablon:Przypisy do sprawdzenia]]
|
[[Kategoria:Szablon:Uwagi do sprawdzenia]]
|
grupa | Domyślna nazwa grupy przypisów. | Brak | uwaga
|
Błędy
edytujBłędy należy zgłaszać na stronie Wikipedia:Kawiarenka/Kwestie techniczne.
return {
["Przypisy"] = function(frame)
--mw.logObject(frame:getParent():getTitle(), "parent:title")
local result = {}
local category = frame.args["kategoria"]
local defaultGroup = frame.args["grupa"]
local hasIgnoredFields = {}
-- grupa przekazywana w polu o pustej nazwie
-- aby docelowo zwolnić wszystkie nazwy na przypisy
local group = frame:getParent().args[""]
if group and string.match(group, "^=*$") then
-- z wyjątkiem błednych wywołań w stylu "=="
table.insert(hasIgnoredFields, "");
group = nil
end
-- alternatywnie do czasu przebotowania z pola o nazwie "grupa"
if not group then
group = frame:getParent().args["grupa"]
if group and (#group == 0) then
group = nil
end
end
local function noArgs()
for k, v in pairs(frame:getParent().args) do
return false
end
return true
end
table.insert(result, '<div class="do-not-make-smaller refsection')
if group or defaultGroup then
local groupClass, _ = (group or defaultGroup) == "uwaga" and "uwagi ll-script ll-script-uwagi" or string.gsub(group or defaultGroup, ' ', '_')
table.insert(result, " refsection-")
table.insert(result, groupClass)
end
table.insert(result, '">')
-- to jest lista przestarzałych pól w wywołaniach szablonów przypisów,
-- które się jeszcze sporadycznie pojawiają w brudnopisach
-- TODO docelowo lista będzie całkowicie usunięta
local exceptions = {
"colwidth", -- kopia z enwiki? do usunięcia
"group", -- kopia z enwiki? do usunięcia
"grupa", -- to tzeba zamienić na gołe '=wartość'
"przypisy", -- a to całkiem usunąć
"refs", -- kopia z enwiki? do usunięcia
}
local ignore = {}
for i, v in ipairs(exceptions) do
ignore[v] = true
end
local contents = {}
for k, v in pairs(frame:getParent().args) do
if (k == "") or ((type(k) == "number") and (k == 1)) then
--mw.logObject( {k, v}, "nazwa grupy albo pole {{{1}}} puste lub z przypisami w stylu <ref name=...>")
table.insert(contents, v)
elseif (type(k) == "string") and not ignore[k] then
-- pole o 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 lub mające nazwę wykluczoną z powodów historycznych
--mw.logObject( {k, v}, "indeksowane pole z potencjalnymi przypisami w stylu <ref name=...>")
table.insert(hasIgnoredFields, k)
table.insert(contents, v)
end
end
local references = frame:extensionTag('references', table.concat(contents), {group=group or defaultGroup, responsive="1"})
table.insert(result, references)
if #hasIgnoredFields > 0 then
table.insert(result, '<span class="problemy">')
table.insert(result, mw.text.nowiki("{{"))
local title = mw.title.new(frame:getParent():getTitle())
if title.namespace ~= 10 then
table.insert(result, title.nsText)
table.insert(result, ":")
end
table.insert(result, title.text)
table.insert(result, mw.text.nowiki("}} Nieprawidłowe pola: "))
table.insert(result, mw.text.listToText(hasIgnoredFields))
table.insert(result, ". ")
--mw.logObject({hasIgnoredFields, category}, "hasIgnoredFields and category")
end
table.insert(result, '</div>')
if (#hasIgnoredFields > 0) and category then
table.insert(result, category)
end
--mw.logObject(table.concat(result), "result")
return table.concat(result)
end,
}