Modul:SimpleDataAccess
Erscheinungsbild
Vorlagenprogrammierung | Diskussionen | Lua | Unterseiten | |||
Modul | Deutsch | English
|
Modul: | Dokumentation |
Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus
--[=[ SimpleDataAccess 2022-07-03
Data Management Module for simplified Access from Within Other Modules
Author: Vollbracht
* MainSnackValue(qualifier, property) wikiData first main snack value
* qualifiersLineup(qualifier, property) sequence of wikiData qualifiers
]=]
--Module globals
local service = {}
--[[
MainSnackValue(qualifier, property)
simplified view on data
Parameters:
qualifier: case 1: wikiData qualifier of an element with a property
case 2: wikiData element with a property
property: Property of the element having result as value
returns: a wikiData qualifier or a string value of MainSnack if available
]]
service.MainSnackValue = function(qualifier, property)
if qualifier == nil or qualifier == "" then
return ""
end
local statementList = {}
local t = type(qualifier)
if t == "table" then
statementList = qualifier:getBestStatements(property)
else
statementList = mw.wikibase.getBestStatements(qualifier, property)
end
if statementList == nil then
return ""
end
local result = statementList[1]["mainsnak"]["datavalue"]["value"]
if type(result) == 'table' then
if result["id"] then return mw.wikibase.getLabel(result["id"]) end
return ""
end
return result
end
--[[
qualifiersLineup(qualifier, property)
sequence of wikiData qualifiers
Parameters:
qualifier: case 1: wikiData qualifier of an element with a property
case 2: wikiData element with a property
property: Property of the element having result qualifiers as values
returns:
best statement's values as long as they are wikiData qualifiers lined up
in a table with respect on series ordinals if available
constraint:
It's in the responsibility of wikiData to provide correct data. In case
of corruption this function might return an empty table or one that
apears empty by starting with index ~= 1.
]]
service.qualifiersLineup = function(qualifier, property)
if qualifier == nil or qualifier == "" then
return {}
end
local statementList = {}
local t = type(qualifier)
if t == "table" then
statementList = qualifier:getBestStatements(property)
else
statementList = mw.wikibase.getBestStatements(qualifier, property)
end
if statementList == nil then
return {}
end
local result = {}
for i, elm in ipairs(statementList) do
local eVal = elm["mainsnak"]["datavalue"]["value"]
if eVal == nil then return result end
t = type(eVal)
if t ~= "table" then return result end
local eQual = eVal["id"]
if eQual == nil then return result end
local iQual = elm["qualifiers"]
if iQual == nil then
mw.log('kein qualifier in ' .. eQual)
table.insert(result, eQual)
else
iQual = iQual["P1545"]
if iQual == nil then
mw.log('keine Ornungsnummer in ' .. eQual)
table.insert(result, eQual)
else
local eNum = iQual[1]["datavalue"]["value"]
table.insert(result, eNum, eQual)
end
end
end
return result
end
return service