Modul:Sandlådan/Larske/Testmodul27

Från Wikipedia

Dokumentationen för denna modul kan skapas på Modul:Sandlådan/Larske/Testmodul27/dok

local p = {}
p.get_property_value_in_SI_unit = function(frame)
	entityId = frame.args['entityId']
	property = frame.args['property']
	entity = mw.wikibase.getEntityObject(entityId)  
	if entity.claims[property][1]['mainsnak'].datavalue.type ~= 'quantity' then return 'FEL: Egenskapen har inte datatypen "Kvantitet".' end
	if entity.claims[property][1]['mainsnak'].datavalue.value.unit == "1" then return tonumber(entity.claims[property][1]['mainsnak'].datavalue.value.amount) .. ' (Värdets enhet, "1", saknar "omvandling till SI-enhet".)' end
	orig_unit = entity.claims[property][1]['mainsnak'].datavalue.value.unit:match('Q%d+') 
	orig_amount = entity.claims[property][1]['mainsnak'].datavalue.value.amount
	orig_unit_entity = mw.wikibase.getEntityObject(orig_unit)
	if orig_unit_entity.claims['P2370'] == nil then return tonumber(entity.claims[property][1]['mainsnak'].datavalue.value.amount) ..' ' ..  mw.wikibase.getLabelByLang( orig_unit, 'sv' ) .. ' (Värdets enhet, "' .. mw.wikibase.getLabelByLang( orig_unit, 'sv' ) .. '", saknar "omvandling till SI-enhet".)' end
	conversion = orig_unit_entity.claims['P2370'][1]['mainsnak'].datavalue.value 
	si_unit = conversion.unit:match('Q%d+') 
	si_amount = orig_amount * conversion.amount
	return si_amount .. ' ' .. mw.wikibase.getLabelByLang( si_unit, 'sv' ) .. ' (konverterat från ' .. tonumber(orig_amount) .. ' ' .. mw.wikibase.getLabelByLang( orig_unit, 'sv' ) .. ' som är det som står i Wikidataobjektet)'
end
return p