Module:Zabytek

Lua
CodeDiscussionEditHistoryLinksLink count Subpages:DocumentationTestsResultsSandboxLive code All modules

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

Code

--[[
                             
 Authors and maintainers:
* User:Jarekt 
]]

local ISOdate = require('Module:ISOdate')._ISOdate

-- add optional module 
-- used for debugging purposes as it detects cases of unintended global variables
local p = {}

function p.main()
	local entity = mw.wikibase.getEntity()
	if not entity then
		return ''
	end
	
	local lang = mw.getCurrentFrame():callParserFunction("int", "lang")
	local results = {}
	local categories = {}
	
	local statements = entity:getBestStatements('P3424')
	local statementsFound = false
	
	for _, statement in pairs(statements) do 
		statementsFound = true
		local registerNumber = p.getRegisterNumber(statement) or '?'
		local registerDate = p.getRegisterDate(statement) or '?'
		
		if registerNumber == '?' then
			table.insert(categories, '[[Category:Cultural heritage monuments in Poland with unknown register number]]')
		end
		if registerDate == '?'  then
			table.insert(categories, '[[Category:Cultural heritage monuments in Poland with unknown register date]]')
		end
		
		local formatted = registerNumber .. (registerDate and (' (' .. ISOdate(registerDate, lang) .. ')') or '')
		table.insert(results, formatted)
	end
	
	if not statementsFound then
		return '?' .. '[[Category:Cultural heritage monuments in Poland with unknown register number]]'
	end
	
	local text = table.concat(results, ', ')
	local cats = table.concat(categories, ' ')

	return text .. cats
end

function p.getRegisterNumber(statement)
	if statement and statement.mainsnak.snaktype == 'value' then
		return statement.mainsnak.datavalue.value
	end
	return nil
end

function p.getRegisterDate(statement) 
	if statement and statement.qualifiers and statement.qualifiers['P585'] then
		local snak = statement.qualifiers['P585'][1]
		local val = snak.datavalue.value.time
		return string.sub(val, 2, 11)
	end
	return nil
end

return p