Fara í innihald

Module:Kyn

Úr Wikipediu, frjálsa alfræðiritinu

Hægt er að búa til leiðbeiningar fyrir þessa skriftu á Module:Kyn/doc

-- Notað í Snið:Persóna til að skila lýsingarorðum á við "Fædd(ur)" í viðeigandi kyni.
--
-- Notkun: {{#invoke:Kyn|main| texti ef karlkyn | texti ef kvenkyn | texti annars}}
--
-- Lítur á hvort "kyn" sé stillt í sniðinu, ef ekki kíkir það á nafn og fæðingarnafn.

local getArgs = require('Module:Arguments').getArgs
local p = {}
local function trim(s)
	return s:match('^%s*(.-)%s*$'):gsub("%'", "") -- Fjarlægir bil og skáletrun
end
local function ends_with(str, ending)
	if str == nil or str == '' then 
		return false 
	end
   return ending == "" or trim(str):sub(-#ending) == ending
end

function p.main(frame)
	local args = getArgs(frame)
	local kk = frame.args[1]
	local kvk = frame.args[2]
	local hvk = frame.args[3]
	local wdid = mw.wikibase.getEntityIdForCurrentPage()
	local WikidataGender
	
	-- Biður Wikidata um að finna kyn, endurskrifað, sneggra.
    if wdid or args['id'] and mw.wikibase.entityExists((args['id'] or wdid)) then
    	if mw.wikibase.getAllStatements((args['id'] or wdid), "P21")[1] and 
    	mw.wikibase.getAllStatements((args['id'] or wdid), "P21")[1].mainsnak.datavalue and 
    	mw.wikibase.getAllStatements((args['id'] or wdid), "P21")[1].mainsnak.datavalue.value.id then
    		WikidataGender = mw.wikibase.getLabel(mw.wikibase.getAllStatements((args['id'] or wdid), "P21")[1].mainsnak.datavalue.value.id)
    	end
    end
	
	-- Prófar fyrst Wikidata
    if WikidataGender == 'karlmaður' then
    	return kk
	elseif WikidataGender == 'kvenmaður' then
    	return kvk
    	
    -- Prófar annars að sjá hvort nafnið endi á "son" eða "dóttir"
	elseif(args.kyn == 'kk' or args.kyn == 'm' or ends_with(args.nafn, 'son') or ends_with(args['fæðingarnafn'], 'son')) then
		return kk
	elseif (args.kyn == 'kvk' or args.kyn == 'f' or ends_with(args.nafn, 'dóttir')  or ends_with(args['fæðingarnafn'], 'dóttir')) then
		return kvk
	else
		return hvk
	end
end

return p