Modul:Wikidata utilities: Unterschied zwischen den Versionen

+ function fw.getValuesWithQualifiers( entity, p, qualifiers, count )
Keine Bearbeitungszusammenfassung
(+ function fw.getValuesWithQualifiers( entity, p, qualifiers, count ))
Zeile 168: Zeile 168:
end
end


return result
end
local function getValueFromDatavalue( datavalue )
local v = datavalue.value
local t = datavalue.type
if type( v ) == 'table' then
if t == 'wikibase-entityid' then v = v.id
elseif t == 'time' then v = v.time
elseif t == 'globecoordinate' then v = v.latitude .. ',' .. v.longitude
elseif t == 'quantity' then v = v.amount .. ',' .. v.unit
end
end
return v, t
end
function fw.getValuesWithQualifiers( entity, p, qualifiers, count )
local result = {}
local statements = fw.getStatements( entity, p, count )
if #statements == 0 then return result end
if qualifiers and ( type( qualifiers ) == 'string' ) then
qualifiers = { qualifiers }
end
local array, key, value, i, j
for i = 1, #statements, 1 do
array = {}
array[ 'value' ], array[ 'value-type' ] =
getValueFromDatavalue( statements[i].mainsnak.datavalue )
if statements[i].qualifiers then
if not qualifiers then -- all qualifier properties
for key, value in pairs( statements[i].qualifiers ) do
if #value > 0 then
for j = 1, #value, 1 do
if value[ j ].snaktype == 'value' then
array[ key ], array[ key .. '-type' ] =
getValueFromDatavalue( value[ j ].datavalue )
break
end
end
end
end
else -- table of selected qualifier properties
for key, value in pairs( qualifiers ) do
if statements[i].qualifiers[ value ] and
( #statements[i].qualifiers[ value ] > 0 ) then
for j = 1, #statements[i].qualifiers[ value ], 1 do
if statements[i].qualifiers[ value ][ j ].snaktype == 'value' then
array[ value ], array[ value .. '-type' ] =
getValueFromgetValueFromDatavalue( statements[i].qualifiers[ value ][ j ].datavalue )
break
end
end
end
end
end
end
table.insert( result, array )
end
return result
return result
end
end
Anonymer Benutzer