Sari la conținut

Modul:WikidataUtils/Football

De la Wikipedia, enciclopedia liberă

Documentația acestui modul poate fi creată la Modul:WikidataUtils/Football/doc

local Wikidata = require('Modul:Wikidata')
local prependIfMissing = require('Modul:StringUtils')._prependIfMissing
local NATIONAL_TEAM_TYPES = {'6979593', '21945604', '58840819', '45053817'}
local p = {}

p.isNationalTeam = function(teamId)
	local teamTypeIds = Wikidata.getEntityIdsList(prependIfMissing({teamId, 'Q'}), 'P31')
	local isNational = false
	for teamTypeIdN, teamTypeIdV in pairs(teamTypeIds) do
		-- verify if item is instance of "association football national team"
		for _,eachNTType in ipairs(NATIONAL_TEAM_TYPES) do
			if tostring(teamTypeIdV) == eachNTType then isNational = true end
		end
		local teamTypeSuperClasses = Wikidata.getEntityIdsList(prependIfMissing({tostring(teamTypeIdV), 'Q'}), 'P279')
		if teamTypeSuperClasses then for _,eachTeamTypeSuperClass in pairs(teamTypeSuperClasses) do
			if tostring(eachTeamTypeSuperClass) == '6979593' or tostring(eachTeamTypeSuperClass) == '21945604' then isNational = true end
		end end
	end
	return isNational
end

p.getNationalTeamName = function(teamId) 
	if not teamId then return nil end

	local shortNameClaims = Wikidata.loadOneValueInChain({teamId, 'P1813'})
	if shortNameClaims then return shortNameClaims end
	local country4sport = Wikidata.loadOneValueInChain({teamId, 'P1532', 'label'}) or ""
	local compClassClaims = mw.wikibase.getBestStatements(teamId, 'P2094')
	if not compClassClaims then return country4sport end
	for _,eachcompClassClaim in ipairs(compClassClaims) do
		if Wikidata.hasValueSnak(eachcompClassClaim) then
			local compClassCompClassClaims = mw.wikibase.getBestStatements(eachcompClassClaim.mainsnak.datavalue.value.id, 'P2094')
			if compClassCompClassClaims then
				for _,eachCompClassCompClassClaim in ipairs(compClassCompClassClaims) do
					if Wikidata.hasValueSnak(eachCompClassCompClassClaim) and eachCompClassCompClassClaim.qualifiers and eachCompClassCompClassClaim.qualifiers['P1013']
					and eachCompClassCompClassClaim.qualifiers['P1013'][1] and eachCompClassCompClassClaim.qualifiers['P1013'][1].datavalue.value.id == 'Q185836' then
						if eachCompClassCompClassClaim.mainsnak.datavalue.value.id == 'Q2735683' then 
							local success, isBTeam = pcall(mw.wikibase.getReferencedEntityId, teamId, 'P31', { 'Q45053817' } )
							if success and isBTeam then return country4sport .. ' B' end
							return country4sport
						end
						local ageGroupName = Wikidata.findLabel(eachCompClassCompClassClaim.mainsnak.datavalue.value.id)
						for _,eachPattern in ipairs({'U(%d+)', 'under%-(%d+)', 'sub (%d+)', 'Under%-(%d+)'}) do
							local uStart, uEnd, uMatch = mw.ustring.find(ageGroupName, eachPattern)
							if uMatch then return country4sport .. ' U' .. uMatch end
						end
					end
				end
			end
		end
	end
	return country4sport
end

return p