Module:Infobox event

From Wikipedia, the free encyclopedia

Documentation for this module may be created at Module:Infobox event/doc

local exports = {}

function extractIsoDate( isoTime )
	return string.match( isoTime, '%d%d%d%d%-%d%d%-%d%d' )
end

function exports.Infobox( frame )
	local id = mw.wikibase.getEntityIdForCurrentPage()
	local item = mw.wikibase.getEntityObject()

	local statements = mw.wikibase.getBestStatements( id, 'P706' )
	local startDate
	if not statements[1] then
		startDate = 'unknown'
			.. '[[Category:Wikidata item misses start date]]'
	else
		local snak = statements[1].mainsnak

		-- Format the Snak with the default Wikibase formatter
		-- startDate = mw.wikibase.formatValue( snak )

		-- Or format yourself
		local isoTime = snak.datavalue.value.time
		startDate = extractIsoDate( isoTime )

		if frame.args['Start date'] ~= '' and startDate ~= frame.args['Start date'] then
			startDate = startDate .. '[[Category:Wikidata mismatches start date]]'
		end

		if statements[2] then
			startDate = startDate .. ' (['
				.. '//wikidata.beta.wmflabs.org/wiki/' .. id .. '#P706'
				.. ' more values available])'
		end
	end

	local statements = mw.wikibase.getBestStatements( id, 'P60' )
	local speakers = ''

	-- Collect all main snaks in a Lua table and format them with the default
	-- Wikibase formatter (comman separated)
	-- local snaks = {}
	-- for index, statement in pairs( statements ) do
	-- 	table.insert( snaks, statement.mainsnak )
	-- end
	-- speakers = mw.wikibase.formatValues( snaks )

	-- Or format yourself
	for index, statement in pairs( statements ) do
		if speakers ~= '' then
			speakers = speakers .. ', '
		end
		speakers = speakers .. statement.mainsnak.datavalue.value
	end

	return '{| class="wikitable" style="float: right; width: 300px;"\n'
		.. '| Start date || ' .. startDate .. '\n'
		.. '|-\n'
		.. '| Speakers || ' .. speakers .. '\n'
		.. '|}'
		--.. '<pre>' .. mw.dumpObject( statements ) .. '</pre>'
end

return exports