Moduł:Przypisy
Z EverybodyWiki Bios & Wiki
Moduł techniczny do obsługi szablonów {{przypisy}} i {{uwagi}}.
Przypisy
[edytuj]
Funkcja generująca sekcję lub treść sekcji przypisów lub uwag.
parametry[edytuj]
Pole | Do czego służy? | {{Przypisy}} | {{Uwagi}} |
---|---|---|---|
wzór | 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*{{!}} .
|
wzór0 | 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*{{))}} .
|
nagłówek | Nagłówek sekcji do wstawienia, jeśli nie zostanie wykryty za pomocą podanego wyrażenia regularnego | == [[Kategoria:Szablon:Przypisy bez oczekiwanego nagłówka]]Przypisy ==
|
== [[Kategoria:Szablon:Uwagi bez oczekiwanego nagłówka]]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[edytuj]
Błę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 patternX = frame.args["wzór"]
local pattern0 = frame.args["wzór0"] or patternX
local section = frame.args["nagłówek"]
local category = frame.args["kategoria"]
local defaultGroup = frame.args["grupa"]
local hasIgnoredFields = false
-- 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 "=="
hasIgnoredFields = true
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
local function missingHeader(pattern)
return
not mw.title.getCurrentTitle().isTalkPage and
not group -- jawnie przekazana grupa musi wyłączać nagłówek
and pattern -- wymagany wzór na wyszukiwanie wywołania z nagłówkiem
and section -- wymagany nagłówek do wstawienia
and not mw.ustring.find(mw.title.getCurrentTitle():getContent(), pattern)
end
local pattern = noArgs() and pattern0 or patternX
--mw.logObject(pattern, "pattern")
if missingHeader(pattern) then
table.insert(result, section)
table.insert(result, "\n")
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 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 ignore = {}
for i, v in ipairs(exceptions) do
ignore[v] = true
end
local contents = {}
for k, v in pairs(frame:getParent().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 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 hasIgnoredFields and category then
--mw.logObject({hasIgnoredFields, category}, "hasIgnoredFields and category")
table.insert(result, category)
end
--mw.logObject(table.concat(result), "result")
return table.concat(result)
end,
}