Zum Inhalt springen

Modul:SimpleDataAccess

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 3. Juli 2022 um 04:28 Uhr durch Vollbracht (Diskussion | Beiträge) (Auslagerung aus Modul:Zeichen). Sie kann sich erheblich von der aktuellen Version unterscheiden.
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
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