Moduł:Brudnopis/Paweł Ziemian/Wikidane/formatWikibaseEntityItem

Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:Brudnopis/Paweł Ziemian/Wikidane/formatWikibaseEntityItem/opis

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