Modul:FormatertVitenskapsnavn/sandkasse
Dette er modulsandkassa for Modul:FormatertVitenskapsnavn (forskjell). |
Formål
redigerHenter vitenskapelig navn fra Wikidata, og legger det i kursiv hvis gruppen er en slekt, art eller underart.
Bruk
redigerModulen brukes ved å legge inn {{#invoke:FormatertVitenskapsnavn|formatervitnavn}} i en mal. Malen {{FormatertVitenskapsnavn}} har implementert dette.
Vedlikeholdskategorier
rediger
local p = {}
function p.getScientificName(frame)
local p225value = '' -- P225: vitenskapelig navn
local p6507value = '' -- P6507: autorstreng
local p105value = '' -- P105: taksonomisk rang
local error = false
local italicName = 0
local italicNames = {
[1] = {['qid'] = 'Q34740', ['label'] = 'slekt', ['abbr'] = nil},
[2] = {['qid'] = 'Q3238261', ['label'] = 'underslekt', ['abbr'] = ' subg. '},
[3] = {['qid'] = 'Q3181348', ['label'] = 'seksjon', ['abbr'] = ' sect. '},
[4] = {['qid'] = 'Q3025161', ['label'] = 'serie', ['abbr'] = ' ser. '},
[5] = {['qid'] = 'Q7432', ['label'] = 'art', ['abbr'] = nil},
[6] = {['qid'] = 'Q68947', ['label'] = 'underart', ['abbr'] = ' subsp. '},
[7] = {['qid'] = 'Q767728', ['label'] = 'varietet', ['abbr'] = ' var. '},
[8] = {['qid'] = 'Q279749', ['label'] = 'form', ['abbr'] = ' f. '},
}
--[[ qid is only needed while testing, remove when done ]]
local qid = frame.args['qid']
if not qid then mw.log('no qidding') return "" end
if not mw.wikibase then mw.log('no wikibase') return "" end
local subject = mw.wikibase.getEntity(qid)
if not subject then mw.log('no subject') return "" end
local p225 = subject:getBestStatements( 'P225' )
local p6507 = subject:getBestStatements( 'P6507' )
local p105 = subject:getBestStatements( 'P105' )
if not p225 or #p225 < 1 then
mw.log('registrer P225 (vitenskapelig navn)')
error = true
else
p225value = p225[1].mainsnak.datavalue.value
mw.log(p225value)
end
if not p6507 or #p6507 < 1 then
mw.log('registrer P6507 (autorstreng)')
error = true
else
p6507value = p6507[1].mainsnak.datavalue.value
mw.log(p6507value)
end
if not p105 or #p105 < 1 then
mw.log('registrer P105 (taksonomisk rang)')
error = true
else
p105value = p105[1].mainsnak.datavalue.value.id
mw.log(p105value)
for k, v in ipairs(italicNames) do
if v['qid'] == p105value then
italicName = k
break
end
end
end
if not error then
if italicName > 0 then
if italicNames[italicName]['abbr'] then
local oldStr = italicNames[italicName]['abbr']
local newStr = "''" .. oldStr .. "''"
p225value = mw.ustring.gsub(p225value, oldStr, newStr, 1)
end
end
return "''" .. p225value .. "''<br/><small>" .. p6507value .. "</small>"
else
mw.log('Feil: registrer nødvendige utsagn på Wikidata …')
return ''
end
end
--[=[
function p.formatervitnavn(frame)
if not mw.wikibase then
return ""
end
qid = frame.args['qid']
local artikkel = mw.wikibase.getEntity()
if qid then
artikkel = mw.wikibase.getEntity(qid)
mw.log(artikkel)
end
if not artikkel then
return "[[Kategori:Artikler som ikke er koblet til Wikidata]]"
end
local claims = artikkel:getProperties()
if not claims or #claims == 0 then
return "[[Kategori:Artikler som mangler utsagn på Wikidata]]"
end
local p225 = artikkel.claims.P225
if not p225 then
return "[[Kategori:Artikler som mangler utsagn om vitenskapelig navn på Wikidata]]"
end
local vitenskapsnavn = p225[1].mainsnak.datavalue["value"]
local p6507 = artikkel.claims.P6507
if not p6507 then
return "[[Kategori:Artikler som mangler utsagn om autorstreng på Wikidata]]"
end
local autorstreng = p6507[1].mainsnak.datavalue["value"]
local p105 = artikkel.claims.P105
if not p105 then
return vitenskapsnavn .. "[[Kategori:Artikler som mangler utsagn om taksonomisk kategori på Wikidata]]"
end
local p105DataValue = p105[1].mainsnak.datavalue
if not p105DataValue then
return vitenskapsnavn .. "[[Kategori:Artikler som mangler utsagn om taksonomisk kategori på Wikidata]]"
end
local taksonkategori = p105DataValue.value["numeric-id"]
-- art: Q7432
-- slekt: Q34740
-- underart: Q68947
if taksonkategori == 7432 or taksonkategori == 34740 or taksonkategori == 68947 then
return "''" .. vitenskapsnavn .. "'' " .. autorstreng
else
return vitenskapsnavn .. ' ' .. autorstreng
end
end
]=]
return p