Documentation icon Moduldokumentation[vis] [redigér] [historik] [opfrisk]

Formål

Angive køn på biografier baseret på hvilket køn, som er registreret i Wikidata.

Brug

Modulen bruges ved at lægge ind {{#invoke:Kategori køn|koenskategori}} i en skabelon. Skabelonen {{FD}} har implementeret det.

{{#invoke:Kategori køn|function_name}}

local math_mod = require( "Module:Math" )

local p = {}
local useKategory = {
	["Q43445"] = " ", -- køn hun for dyr - kategoriserer vi ikke
	["Q44148"] = " ", -- køn han for dyr - kategoriserer vi ikke
	["Q48270"] = " ", -- kjønnsskeiv  -- på vent
	["Q189125"] = " ", -- "[[Kategori:transpersoner]]",  .. utsettes litt
	["Q1052281"] = " " , -- Til vurdering: "[[Kategori:Kvinde]][[Kategori:transpersoner]]",
	["Q1097630"] = " ",  -- interseksuell - på vent
	["Q2449503"] = " " , -- Til vurdering: "[[Kategori:Mand]][[Kategori:transpersoner]]",
	["Q6581072"] = "[[Kategori:Kvinde]]",
	["Q6581097"] = "[[Kategori:Mand]]",
	["Q18116794"] = " ",  -- genderfluid - på vent
	["Q27679684"] = " ",  -- transfeminine - på vent
	["Q96000630"] = " "  -- X-gender - på vent
	  
	}
	
local function selectSingleClaim(claims)
	if not claims then
		return nil
	end
	local selectedClaim = nil
	for idx,claim in pairs(claims) do
		if claim.rank == 'preferred' then
			return claim
		end
		if claim.rank == 'normal' then
			if not selectedClaim then
				selectedClaim = claim
			end
		end
	end
	return selectedClaim
end

-- Return køn til artiklen
function p.koenskategori(frame)
    if not mw.wikibase then
        return ""
    end
    local artikel = mw.wikibase.getEntityObject()
    if not artikel then
        return "[[Kategori:Artikler som ikke er forbundet til Wikidata]]"
    end
    local claims = artikel.claims
    if not claims then
        return "[[Kategori:Artikler som mangler udsagn på Wikidata]]"
    end
    
    local p21 = selectSingleClaim(claims.P21)
    if not p21 then
        local p31 = claims.P31
        if p31 then
            local forekomst = p31[1].mainsnak.datavalue.value["numeric-id"]
            if forekomst == 5 then
                return "[[Kategori:Wikidata mangler køn]]"
            end
        end
        return ""
    end
    if p21.mainsnak.datavalue == nil then
        return "[[Kategori:Køn ukendt]]"
    else
        local kjonnid = p21.mainsnak.datavalue.value["numeric-id"]
        local kjonn =  "Q" ..kjonnid
    	local kjonnkat = useKategory[kjonn] or "[[Kategori:Køn ukendt]]"
    	return kjonnkat
    end
end

function p.statistik()
   local maend = mw.site.stats.pagesInCategory("mænd", "pages")
   local kvinder = mw.site.stats.pagesInCategory("kvinder", "pages")
   local alle = maend+kvinder
   local prosMaend = maend*100/alle
   local prosKvinder = kvinder*100/alle
   return "Antal biografier:<br/>" ..
   "- Kvinder   " .. mw.language.getContentLanguage():formatNum(kvinder) .. " (" .. math_mod._precision_format(prosKvinder,2) .. " %)<br/>" .. 
   "- Maend      " .. mw.language.getContentLanguage():formatNum(maend) .. " (" .. math_mod._precision_format(prosMaend,2) .. " %)"
end

return p