Modul:FormatertVitenskapsnavn/sandkasse

Fra Wikipedia, den frie encyklopedi
Moduldokumentasjon

Formål[rediger kilde]

Henter vitenskapelig navn fra Wikidata, og legger det i kursiv hvis gruppen er en slekt, art eller underart.

Bruk[rediger kilde]

Modulen brukes ved å legge inn {{#invoke:FormatertVitenskapsnavn|formatervitnavn}} i en mal. Malen {{FormatertVitenskapsnavn}} har implementert dette.

Vedlikeholdskategorier[rediger kilde]


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