Module:Sandbox/Jc86035/3

require('strict')

local infobox = require('Module:Infobox').infobox

local p = {}

local function getProperty(entity, property, value) if entity and entity.claims then local claims = entity.claims[property] if claims and claims[1] then if value == 'string' then return claims[1].mainsnak.datavalue.value, claims[1].qualifiers end return claims[1].mainsnak.datavalue.value.id, claims[1].qualifiers end end end

local function getQualifier(qualifiers, property, value) local claims = qualifiers[property] if claims and claims[1] then if value == 'string' then return claims[1].datavalue.value end return claims[1].datavalue.value.id	end end

function p.test(frame) local args = frame.args local entity = mw.wikibase.getEntity(args.qid) local data = { title = 'Title', aboveclass = 'summary', label3 = 'Language', data3 = args.language, label10 = 'Artist', data10 = args.artist, label20 = 'ISWC', data20 = (args.ISWC or args.iswc or getProperty(entity, 'P1827', 'string')), label21 = 'ISRC', data21 = (args.ISRC or args.isrc), }	local recording if not data.data10 or not data.data21 then local artist, qualifiers = getProperty(entity, 'P175') if artist then data.data10 = data.data10 or mw.wikibase.getLabel(artist) end local subject_of = getQualifier(qualifiers, 'P805') if subject_of then recording = mw.wikibase.getEntity(subject_of) local isrc = getProperty(recording, 'P1243', 'string') data.data21 = data.data21 or isrc end end return infobox(data) end

return p