Modul:Kategori køn

Documentation icon Moduldokumentation[vis] [redigér] [historik] [opfrisk]
Ambox warning orange.svg
Dette Lua-modul bliver brugt på 84.035 sider.
For at undgå store forstyrrelser og unødvendigt pres på serverne, bør alle ændringer af modulet først afprøves i dens tilhørende sandkasse eller test-undersider. De færdigafprøvede ændringer kan derefter overføres til denne side ved en enkelt redigering. Overvej venligst at diskutere alle ændringer på diskussionssiden før du implementerer dem.

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