Module:FIFARankingMax

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Lua error in Module:Documentation at line 873: message: type error in message cfg.testcases-run-link-display (string expected, got nil).

local p = {}

local i18n =
{
	["errors"] =
	{
		["entity-not-found"] = "Wikidata entity not found.",
		["claims-not-found"] = "Wikidata entity has no claims.",
		["property-not-found"] = "",
		["unknown-claim-type"] = "Unknown claim type.",
		["unknown-entity-type"] = "Unknown entity type.",
		["qualifier-not-found"] = "Qualifier not found.",
		["site-not-found"] = "Wikimedia project not found.",
		["unknown-datetime-format"] = "Unknown datetime format.",
		["ranks-not-found"] = "No ranks found."
	},
	["months"] =
	{
		"Ιανουαρίου", "Φεβρουαρίου", "Μαρτίου", "Απριλίου", "Μαΐου", "Ιουνίου", "Ιουλίου", "Αυγούστου", "Σεπτεμβρίου", "Οκτωβρίου", "Νοεμβρίου", "Δεκεμβρίου"
	}
}

function p.main(frame)
	-- allow us to see all values if debugging - set dbg=true as parameter
	dbug = frame.args.dbg or false
	-- see if a qid was supplied for arbitrary access; make empty string into nil
	local qid = mw.text.trim(frame.args.qid or "")
	if qid and (#qid == 0) then qid = nil end
	
	local entity = mw.wikibase.getEntity(qid)
	if not entity then return i18n.errors["entity-not-found"] end
	if not entity.claims then return i18n.errors["claims-not-found"] end
	local props = entity.claims['P1352']
	if not props then return i18n.errors["property-not-found"] end
	
	local rank = {}
	local timestamp = {}
	for k, v in pairs(props) do
		if v.qualifiers and v.qualifiers["P585"] and v.qualifiers["P459"] then
			if v.qualifiers["P459"][1].datavalue.value.id == "Q180825" then
				rank[#rank + 1] = v.mainsnak.datavalue.value.amount
				timestamp[#rank] = v.qualifiers["P585"][1].datavalue.value.time
			end
		end
	end
	
	if rank then
		local ts = ""
		local imax = 0
		for i, v in ipairs(timestamp) do
			if v > ts then
				ts = v
				imax = i
			end
		end
		
		local lastdate = tonumber(ts:sub(10, 11)) .. " " .. i18n.months[tonumber(ts:sub(7, 8))] .. " " .. tonumber(ts:sub(2, 5))
		local lastrank = tonumber(rank[imax])
		
		if dbug then
			return table.concat(rank, ", ") .. "<br>" .. table.concat(timestamp, ", ") .. "<br>Latest = " .. lastdate .. " rank is " .. lastrank
		else
			return lastrank .. " (" .. lastdate .. ")"
		end
	else
		return i18n.errors["ranks-not-found"]
	end
end

return p