Moduł:Wikidane/format/wikibaseEntityItem
Dedykowana uniwersalna wtyczka formatująca wartość cechy zawierający wskazanie do innego elementu Wikidanych. Domyślnie dostarczanym wynikiem jest tekst wygenerowany na podstawie etykiety elementu Wikidanych lub jeśli nazwy tytułu powiązanego z nim artykułu.
Opcje
[edytuj]linkuj
[edytuj]Wtyczka obsługuje parametr standardowy linkuj.
alt
[edytuj]Pole pozwalające modyfikować sposób generowania wyniku:
- id
- odczyt identyfikatora wskazanego elementu w Wikidanych tj. Qnnnn.
- tak
- próba wygenerowania opisu na podstawie cechy „nazwa oryginalna”
- kobieta, Q6581072
- próba wygenerowania opisu na podstawie cechy „żeńska forma etykiety”
- mężczyzna, Q6581097
- próba wygenerowania opisu na podstawie cechy „męska forma etykiety”
Brak wartości, wartości błędne lub prawidłowe, lecz nieumożliwiające uzyskanie wyniku zgodnego z określonym parametrem zwracają wynik domyślny.
Zobacz też
[edytuj]
Na stronie Moduł:Wikidane/format/wikibaseEntityItem wykorzystano treści ze strony Moduł:Wikidane/format/wikibaseEntityItem w polskiej Wikipedii (link do wersji).
Jej autorzy wymienieni są w historii edycji.
Prawa autorskie: na licencji Creative Commons CC-BY-SA.
local moduleData = mw.loadData("Module:Wikidane/data")
return {
options = {
"alt", -- alternatywna metoda uzyskania opisu jeśli nie ma etykiety lub nazwy strony
default = {
["alt"] = false,
},
},
scope = "snak",
format = function(snak, options)
if snak.snaktype ~= "value" then
return require("Module:Wikidane/format/snak").format(snak, options)
end
local value = snak.datavalue.value
local id = "Q" .. value["numeric-id"]
if options.alt == "id" then
return id
end
local wikidataItemLink = string.format(moduleData.wikidataItemLink, id)
local label = false
local seeP = false
if (options.alt == "kobieta") or (options.alt == "Q6581072") then
seeP = "P2521"
elseif (options.alt == "mężczyzna") or (options.alt == "Q6581097") then
seeP = "P3321"
elseif options.alt == "tak" then
seeP = "P1705"
end
if seeP then
local entity = mw.wikibase.getEntity(id)
if entity and entity.claims and entity.claims[seeP] then
for i, v in ipairs(entity.claims[seeP]) do
if v.mainsnak and (v.mainsnak.snaktype == "value") and (v.mainsnak.datatype == "monolingualtext") and v.mainsnak.datavalue and (v.mainsnak.datavalue.type == "monolingualtext") and v.mainsnak.datavalue.value and (v.mainsnak.datavalue.value.language == "pl") then
label = v.mainsnak.datavalue.value.text
if label then
break
end
end
end
end
end
if not label then
local lang
label, lang = mw.wikibase.getLabelWithLang(id)
if lang ~= "pl" then
label = false -- etykietki tylko po polsku
end
end
local sitelink = mw.wikibase.sitelink(id)
if not label or (#label == 0) then
label = sitelink -- just in case missing label
end
if not label then
local main = mw.title.getCurrentTitle().namespace == 0
return (main and moduleData.itemWithoutLabelCat or "")
.. moduleData.itemWithoutLabelTitle
.. wikidataItemLink
end
if not options.linkItem then
return label -- .. wikidataItemLink
end
if sitelink then
return "[[" .. sitelink .. "|" .. label .. "]]" -- .. wikidataItemLink
end
return label .. wikidataItemLink
end,
}