Modul:KategoriKjønn: Forskjell mellom sideversjoner

Fra Wikisida.no
Hopp til navigering Hopp til søk
(Kategoriserer transmenn og transkvinner som hhv. menn og kvinner, ettersom det er (tilsynelatende) bestemt at det ikke skal kategoriseres dypere.)
 
m (Én sideversjon ble importert)

Sideversjonen fra 22. feb. 2024 kl. 15:59

Formål

Legger biografiartikler i artikkel basert på hvilket kjønn som er registrert i Wikidata.

Bruk

Modulen brukes ved å legge inn {{#invoke:KategoriKjønn|kjonnskategori}} i en mal. Malen {{KategoriKjønn}} har implementert dette.


local math_mod = require( "Module:Math" )

local p = {}
local useKategory = {
	["Q43445"] = " ", -- kjønn hunn for dyr - kategoriserer vi ikke
	["Q44148"] = " ", -- kjønn hann for dyr - kategoriserer vi ikke
	["Q48270"] = " ", -- ikke-binær  -- på vent
	["Q189125"] = " ", -- "[[Kategori:transpersoner]]",  .. utsettes litt
	["Q1052281"] = "[[Kategori:Enkeltkvinner]]" , -- transkvinner
	["Q1097630"] = " ",  -- interseksuell - på vent
	["Q2449503"] = "[[Kategori:Enkeltmenn]]" , -- transmenn
	["Q6581072"] = "[[Kategori:Enkeltkvinner]]",
	["Q6581097"] = "[[Kategori:Enkeltmenn]]",
	["Q12964198"] = " ", -- kjønnsskeiv - på vent
	["Q18116794"] = " ",  -- kjønnsflytende - på vent
	["Q27679684"] = " ",  -- transfeminin - 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 kjønn til artikkelen
function p.kjonnskategori(frame)
    if not mw.wikibase then
        return ""
    end
    local artikkel = mw.wikibase.getEntityObject()
    if not artikkel then
    	local nsp = mw.title.getCurrentTitle().namespace
    	if nsp == 0  then  -- bare kategoriser i hovednavnerommet.
        	return "[[Kategori:Artikler som ikke er koblet til Wikidata]]"
   		end
   		return ""
    end
    local claims = artikkel.claims
    if not claims then
        return "[[Kategori:Artikler som mangler utsagn 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:Artikler hvor kjønn mangler på Wikidata]]"
            end
        end
        return ""
    end
    if p21.mainsnak.datavalue == nil then
        return "[[Kategori:Kjønn ukjent]]"
    else
        local kjonnid = p21.mainsnak.datavalue.value["numeric-id"]
        local kjonn =  "Q" ..kjonnid
    	local kjonnkat = useKategory[kjonn] or "[[Kategori:Kjønn ukjent]]"
    	return kjonnkat
    end
end

function p.statistikk()
   local menn = mw.site.stats.pagesInCategory("enkeltmenn", "pages")
   local kvinner = mw.site.stats.pagesInCategory("enkeltkvinner", "pages")
   local alle = menn+kvinner
   local prosMenn = (menn)*100/alle
   local prosKvinner = (kvinner)*100/alle
   return "Antall biografier:<br/>" ..
   "- Kvinner   " .. mw.language.getContentLanguage():formatNum(kvinner) .. " (" .. math_mod._precision_format(prosKvinner,2) .. " %)<br/>" .. 
   "- Menn      " .. mw.language.getContentLanguage():formatNum(menn) .. " (" .. math_mod._precision_format(prosMenn,2) .. " %)"
end

return p