Module:Kyn
Útlit
Notað til að skila lýsingarorðum á við 'Fædd(ur)' í viðeigandi kyni. Notar ýmist tilgreint kyn á Wikidata, gefið kyn í gildi eða finnur út kyn út frá íslensku nafni.
- Dæmi
{{#invoke:Kyn|main|Fæddur|Fædd|Fædd(ur)|nafn=Jón Jónsson}}
Gefur: 'Fæddur'
Notað til að skila lýsingarorðum á við 'Fædd(ur)' í viðeigandi kyni.
| Breyta | Lýsing | Gerð | Staða | |
|---|---|---|---|---|
| Karlkyn | 1 | Karlkynsbeyging orðs | Lína | nauðsynleg |
| Kvenkyn | 2 | Kvenkynsbeyging orðs | Lína | nauðsynleg |
| Hvorugkyn | 3 | Hvorugkynsbeyging orðs | Lína | nauðsynleg |
| Auðkenni á Wikidata | id | engin lýsing | Lína | valfrjáls |
| kyn | kyn | Kyn sem á að nota
| Lína | valfrjáls |
| nafn | nafn fæðingarnafn | Íslenskt nafn sem á að nota til að finna út kyn. | Strengur | valfrjáls |
-- 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