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.

linkuj

edytuj

Wtyczka obsługuje parametr standardowy linkuj.

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,
 
}