Module:Kyn
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