UWAGA |
---|
Większość artykułów w portalu to nasze własne teksty z kluczowych dziedzin związanych z naszą misją. Spora część materiałów pochodzi też z polskiej wersji Wikipedii, gdzie były odrzucone ze względu na politykę redaktorów (przeczytaj o krytyce Wikipedii). Są też i takie, które zostały przeniesione na nasze strony, gdyż stanowią istotne uzupełnienie merytorycznej treści naszego serwisu. Wszystkie artykuły podlegają edycji przez naszych Użytkowników, dlatego ich wersje mogą się różnić od prezentowanych na innych witrynach. |
Moduł:Wikidane/format/qualifiers
< Moduł:Wikidane | format
Przejdź do nawigacji
Przejdź do wyszukiwania
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Wikidane/format/qualifiers/opis
local format = require("Moduł:Wikidane/format/snak").format
local function SELECT(prop, options, name, prefix, separator, lastSeparator)
if prop.qualifiers and prop.qualifiers[name] then
local items = {}
for _, v in ipairs(prop.qualifiers[name]) do
if v.snaktype == "value" then
table.insert(items, format(v, options))
end
end
if #items > 0 then
return prefix..mw.text.listToText(items, separator, lastSeparator)
end
end
end
return {
wikiUL = function(prop, options, name)
return SELECT(prop, options, name, "\n*", "\n*", "\n*")
end,
wikiOL = function(prop, options, name)
return SELECT(prop, options, name, "\n#", "\n#", "\n#")
end,
BR = function(prop, options, name)
return SELECT(prop, options, name, "", "<br />", "<br />")
end,
AND = function(prop, options, name)
return SELECT(prop, options, name, "", ", ", " i\194\160")
end,
OR = function(prop, options, name)
return SELECT(prop, options, name, "", ", ", " lub\194\160")
end,
MINTIME = function(prop, options, name)
if prop.qualifiers and prop.qualifiers[name] then
-- select minimum date
local time = false
local novalue = false
local somevalue = false
for _, v in ipairs(prop.qualifiers[name]) do
if v.snaktype == "value" then
if not time or (v.datavalue.value.time < time.datavalue.value.time) then
time = v
end
elseif v.snaktype == "novalue" then
novalue = v
elseif v.snaktype == "somevalue" then
somevalue = v
end
end
local result = time or novalue or somevalue
if result then
return options.naked == true and result or format(result, options)
end
end
end,
MAXTIME = function(prop, options, name)
if prop.qualifiers and prop.qualifiers[name] then
-- select maximum date
local time = false
local novalue = false
local somevalue = false
for _, v in ipairs(prop.qualifiers[name]) do
if v.snaktype == "value" then
if not time or (time.datavalue.value.time < v.datavalue.value.time) then
time = v
end
elseif v.snaktype == "novalue" then
novalue = v
elseif v.snaktype == "somevalue" then
somevalue = v
end
end
local result = time or novalue or somevalue
if result then
return options.naked == true and result or format(result, options)
end
end
end,
TEXT1 = function(prop, langs, name)
if prop.qualifiers and prop.qualifiers[name] then
-- use pl as default if none is given
if not langs or (#langs == 0) then
langs = { "pl" }
end
-- list first occurance of all languages
local texts = {}
for _, v in ipairs(prop.qualifiers[name]) do
if (v.snaktype == "value") and (v.datatype == "monolingualtext") and v.datavalue and (v.datavalue.type == "monolingualtext") and v.datavalue.value then
local language = v.datavalue.value.language
local text = v.datavalue.value.text
if language and text and (#text > 0) and not texts[language] then
texts[language] = text
end
end
end
-- return first available language
for _, v in ipairs(langs) do
if texts[v] then
return texts[v]
end
end
end
end,
QUALITY = function(prop)
local name = "P1480"
local i18n = {
Q5727902 = "ok.", -- skrót
Q30230067 = "być może", -- zmiana nazwy
}
local results = {}
if prop.qualifiers and prop.qualifiers[name] then
for _, v in ipairs(prop.qualifiers[name]) do
if (v.snaktype == "value") and (v.datatype == "wikibase-item") and (v.datavalue.type == "wikibase-entityid") then
local label = i18n[v.datavalue.value.id] or mw.wikibase.getLabelByLang( v.datavalue.value.id, "pl" )
if label and (#label > 0) then
table.insert(results, label)
table.insert(results, " ")
end
end
end
end
return table.concat(results, "") or ""
end,
}