<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="nl">
	<id>https://wiki-raamsdonk.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FPlaces-n</id>
	<title>Module:Wikidata/Places-n - Bewerkingsoverzicht</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-raamsdonk.nl/index.php?action=history&amp;feed=atom&amp;title=Module%3AWikidata%2FPlaces-n"/>
	<link rel="alternate" type="text/html" href="https://wiki-raamsdonk.nl/index.php?title=Module:Wikidata/Places-n&amp;action=history"/>
	<updated>2026-04-18T13:31:16Z</updated>
	<subtitle>Bewerkingsoverzicht voor deze pagina op de wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki-raamsdonk.nl/index.php?title=Module:Wikidata/Places-n&amp;diff=78058&amp;oldid=prev</id>
		<title>Colani: 1 versie geïmporteerd</title>
		<link rel="alternate" type="text/html" href="https://wiki-raamsdonk.nl/index.php?title=Module:Wikidata/Places-n&amp;diff=78058&amp;oldid=prev"/>
		<updated>2024-03-26T11:11:54Z</updated>

		<summary type="html">&lt;p&gt;1 versie geïmporteerd&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nieuwe pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local WDS = require( &amp;#039;Module:WikidataSelectors&amp;#039; );&lt;br /&gt;
local p = {};&lt;br /&gt;
local project = &amp;#039;nlwiki&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
local function min( prev, next )&lt;br /&gt;
	if ( prev == nil ) then return next;&lt;br /&gt;
	elseif ( prev &amp;gt; next ) then return next;&lt;br /&gt;
	else return prev; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function max( prev, next )&lt;br /&gt;
	if ( prev == nil ) then return next;&lt;br /&gt;
	elseif ( prev &amp;lt; next ) then return next;&lt;br /&gt;
	else return prev; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTimeBoundariesFromProperty( context, propertyId )&lt;br /&gt;
	mw.log( &amp;#039;Get time boundaries for &amp;#039; .. propertyId .. &amp;#039;...&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	local dateClaims = WDS.filter( context.entity.claims, propertyId );&lt;br /&gt;
	if ( not dateClaims or #dateClaims == 0 ) then return nil; end&lt;br /&gt;
	mw.log( &amp;#039;Get time boundaries for &amp;#039; .. propertyId .. &amp;#039;... Got &amp;#039; .. #dateClaims .. &amp;#039; date claim(s)&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	-- only support exact date so far, but need improvment&lt;br /&gt;
	local left = nil;&lt;br /&gt;
	local right = nil;&lt;br /&gt;
&lt;br /&gt;
	if ( not left or not right ) then return nil; end&lt;br /&gt;
&lt;br /&gt;
	mw.log( &amp;#039;Time boundaries for &amp;#039; .. propertyId .. &amp;#039; are &amp;#039; .. left .. &amp;#039; and &amp;#039; .. right );&lt;br /&gt;
	return { left, right };&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTimeBoundariesFromProperties( context, propertyIds )&lt;br /&gt;
	for _, propertyId in ipairs( propertyIds ) do&lt;br /&gt;
		local result = getTimeBoundariesFromProperty( context, propertyId );&lt;br /&gt;
		if result then&lt;br /&gt;
			return result;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getTimeBoundariesFromQualifiers( context, statement, qualifierId )&lt;br /&gt;
	-- only support exact date so far, but need improvment&lt;br /&gt;
	local left = nil;&lt;br /&gt;
	local right = nil;&lt;br /&gt;
	if ( statement.qualifiers and statement.qualifiers[qualifierId] ) then&lt;br /&gt;
		for _, qualifier in pairs( statement.qualifiers[qualifierId] ) do&lt;br /&gt;
			local boundaries = context.parseTimeBoundariesFromSnak( qualifier );&lt;br /&gt;
			if ( not boundaries ) then return nil; end&lt;br /&gt;
			left = min( left, boundaries[1] );&lt;br /&gt;
			right = max( right, boundaries[2] );&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( not left or not right ) then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return { left, right };&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getParentsInBoundariesSnakImpl( context, entity, boundaries, propertyIds )&lt;br /&gt;
	local results = {};&lt;br /&gt;
&lt;br /&gt;
	if entity.claims then&lt;br /&gt;
		for _, propertyId in ipairs( propertyIds ) do&lt;br /&gt;
			local filteredClaims = WDS.filter( entity.claims, propertyId .. &amp;#039;[rank:preferred, rank:normal]&amp;#039; );&lt;br /&gt;
			if filteredClaims then&lt;br /&gt;
				for _, claim in pairs( filteredClaims ) do&lt;br /&gt;
					local startBoundaries = getTimeBoundariesFromQualifiers( context, claim, &amp;#039;P580&amp;#039; );&lt;br /&gt;
					local endBoundaries = getTimeBoundariesFromQualifiers( context, claim, &amp;#039;P582&amp;#039; );&lt;br /&gt;
		&lt;br /&gt;
					if ( (startBoundaries == nil or ( startBoundaries[2] &amp;lt;= boundaries[1]))&lt;br /&gt;
							and (endBoundaries == nil or ( endBoundaries[1] &amp;gt;= boundaries[2]))) then&lt;br /&gt;
						table.insert( results, claim.mainsnak );&lt;br /&gt;
					end &lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if #results &amp;gt; 0 then&lt;br /&gt;
				break;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return results;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getParentsInBoundariesSnak( context, entity, boundaries )&lt;br /&gt;
	if ( not entity ) then error(&amp;#039;entity must be specified&amp;#039;); end&lt;br /&gt;
	if ( type(entity) ~= &amp;#039;table&amp;#039; ) then error(&amp;#039;entity must be table&amp;#039;); end&lt;br /&gt;
	if ( not boundaries ) then error(&amp;#039;boundaries must be specified&amp;#039;); end&lt;br /&gt;
	if ( type(boundaries) ~= &amp;#039;table&amp;#039; ) then error(&amp;#039;boundaries must be table&amp;#039;); end&lt;br /&gt;
&lt;br /&gt;
	local results = getParentsInBoundariesSnakImpl( context, entity, boundaries, {&amp;#039;P131&amp;#039;} )&lt;br /&gt;
	if not results or #results == 0 then&lt;br /&gt;
		results = getParentsInBoundariesSnakImpl( context, entity, boundaries, {&amp;#039;P17&amp;#039;} )&lt;br /&gt;
	end&lt;br /&gt;
	for r, result in pairs( results ) do&lt;br /&gt;
		local resultId = &amp;#039;Q&amp;#039; .. result.datavalue.value[&amp;#039;numeric-id&amp;#039;];&lt;br /&gt;
		if ( resultId == entity.id ) then&lt;br /&gt;
			return nil;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return results;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local unions = { &lt;br /&gt;
	Q1140229 = true, -- political union&lt;br /&gt;
	Q3623811 = true, -- Экономический союз&lt;br /&gt;
	Q4120211 = true -- региональная организация&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local countries = { &lt;br /&gt;
	Q6256 = true, -- страна&lt;br /&gt;
	Q7275 = true, -- государство&lt;br /&gt;
	Q3624078 = true -- суверенное государство&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function isSkipTopLevel( entity )&lt;br /&gt;
	local isCountry = false;&lt;br /&gt;
	local isUnion = false;&lt;br /&gt;
	if ( entity&lt;br /&gt;
			and entity.claims&lt;br /&gt;
			and entity.claims.P31 ) then&lt;br /&gt;
		for c, claim in pairs( entity.claims.P31 ) do&lt;br /&gt;
			if ( claim&lt;br /&gt;
					and claim.mainsnak&lt;br /&gt;
					and claim.mainsnak.datavalue&lt;br /&gt;
					and claim.mainsnak.datavalue.value&lt;br /&gt;
					and claim.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] ) then&lt;br /&gt;
				local typeId = &amp;#039;Q&amp;#039; .. claim.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;];&lt;br /&gt;
				isCountry = isCountry or countries[typeId];&lt;br /&gt;
				isUnion = isUnion or unions[typeId];&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return isUnion and not isCountry;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isPartOfNext(prevLabel, nextLabel)&lt;br /&gt;
	return (mw.ustring.len(prevLabel) &amp;gt; mw.ustring.len(nextLabel))&lt;br /&gt;
		and (mw.ustring.sub( prevLabel, mw.ustring.len(prevLabel) - mw.ustring.len(nextLabel) + 1 ) == nextLabel);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--Property:P19, Property:P20, Property:P119&lt;br /&gt;
function p.formatPlaceWithQualifiers( context, options, statement )&lt;br /&gt;
	local property = mw.ustring.upper( options.property );&lt;br /&gt;
	mw.log( &amp;#039;formatPlaceWithQualifiers(..., &amp;#039; .. property .. &amp;#039;)&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
	local entriesToLookupCategory = {};&lt;br /&gt;
&lt;br /&gt;
	local circumstances = context.getSourcingCircumstances( statement );&lt;br /&gt;
	local result = &amp;#039;&amp;#039;;&lt;br /&gt;
	local baseResult = context.formatSnak( options, statement.mainsnak, circumstances );&lt;br /&gt;
	insertFromSnak( statement.mainsnak, entriesToLookupCategory )&lt;br /&gt;
&lt;br /&gt;
	local hasAdditionalQualifiers = false;&lt;br /&gt;
	if ( statement.qualifiers ) then&lt;br /&gt;
		--parent divisions&lt;br /&gt;
		if ( statement.qualifiers.P131 ) then&lt;br /&gt;
			for i, qualifier in ipairs( statement.qualifiers.P131 ) do&lt;br /&gt;
				local parentOptions = options;&lt;br /&gt;
				-- local parentOptions = mw.clone( options );&lt;br /&gt;
				parentOptions[&amp;#039;text&amp;#039;] = getLabel( context, qualifier, boundaries );&lt;br /&gt;
&lt;br /&gt;
				result = result .. &amp;#039;, &amp;#039; .. context.formatSnak( parentOptions, qualifier );&lt;br /&gt;
				insertFromSnak( qualifier, entriesToLookupCategory )&lt;br /&gt;
				hasAdditionalQualifiers = true;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		--country&lt;br /&gt;
		if ( statement.qualifiers.P17 ) then&lt;br /&gt;
			for i, qualifier in ipairs( statement.qualifiers.P17 ) do&lt;br /&gt;
				result = result .. &amp;#039;, &amp;#039; .. context.formatSnak( options, qualifier );&lt;br /&gt;
				insertFromSnak( qualifier, entriesToLookupCategory )&lt;br /&gt;
				hasAdditionalQualifiers = true;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( statement.mainsnak&lt;br /&gt;
			and statement.mainsnak.datavalue&lt;br /&gt;
			and statement.mainsnak.datavalue.value&lt;br /&gt;
			and statement.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] ) then&lt;br /&gt;
		local entity = mw.wikibase.getEntity( &amp;#039;Q&amp;#039; .. statement.mainsnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] );&lt;br /&gt;
		local parentSnaks = { statement.mainsnak };&lt;br /&gt;
		local parentEntities = { entity };&lt;br /&gt;
&lt;br /&gt;
		local actualDateBoundariesProperty = nil;&lt;br /&gt;
		if ( property == &amp;#039;P19&amp;#039; ) then actualDateBoundariesProperty = &amp;#039;P569&amp;#039;; end&lt;br /&gt;
		if ( property == &amp;#039;P20&amp;#039; ) then actualDateBoundariesProperty = &amp;#039;P570&amp;#039;; end&lt;br /&gt;
		if ( actualDateBoundariesProperty ~= nil ) then&lt;br /&gt;
			local boundaries = getTimeBoundariesFromProperty( context, actualDateBoundariesProperty );&lt;br /&gt;
			if ( boundaries ) then&lt;br /&gt;
				local entityOptions = options;&lt;br /&gt;
				-- local entityOptions = mw.clone( options );&lt;br /&gt;
				entityOptions[&amp;#039;text&amp;#039;] = getLabel( context, entity, boundaries );&lt;br /&gt;
				baseResult = context.formatSnak( entityOptions, statement.mainsnak, circumstances );&lt;br /&gt;
&lt;br /&gt;
				local parent = entity;&lt;br /&gt;
				while ( parent ~= nil ) do&lt;br /&gt;
					-- get parent&lt;br /&gt;
					local newParentSnaks = getParentsInBoundariesSnak( context, parent, boundaries );&lt;br /&gt;
					if ( not newParentSnaks or #newParentSnaks == 0 ) then&lt;br /&gt;
						parent = nil;&lt;br /&gt;
					elseif ( #newParentSnaks == 1 ) then&lt;br /&gt;
						local parentSnak = newParentSnaks[1];&lt;br /&gt;
						parent = mw.wikibase.getEntity( &amp;#039;Q&amp;#039; .. parentSnak.datavalue.value[&amp;#039;numeric-id&amp;#039;] );&lt;br /&gt;
						table.insert( parentSnaks, parentSnak );&lt;br /&gt;
						table.insert( parentEntities, parent );&lt;br /&gt;
					else&lt;br /&gt;
						parent = nil;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if ( not hasAdditionalQualifiers ) then&lt;br /&gt;
					for i=2,#parentSnaks,1 do&lt;br /&gt;
						local parentSnak = parentSnaks[i];&lt;br /&gt;
						insertFromSnak( parentSnak, entriesToLookupCategory )&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- mw.logObject( parentSnaks );&lt;br /&gt;
				do&lt;br /&gt;
					local i = #parentSnaks;&lt;br /&gt;
					while ( i &amp;gt; 1 ) do&lt;br /&gt;
						local prevEntity = parentEntities[i - 1];&lt;br /&gt;
						-- TODO: use English labels, if there is no current language labels&lt;br /&gt;
						local prevLabel = getLabel( context, prevEntity, boundaries ) or &amp;#039;&amp;#039;;&lt;br /&gt;
						local nextEntity = parentEntities[i];&lt;br /&gt;
						local nextLabel = getLabel( context, nextEntity, boundaries ) or &amp;#039;&amp;#039;;&lt;br /&gt;
						if ( prevLabel == nextLabel ) then&lt;br /&gt;
							-- do not output same label twice (NY, NY, USA)&lt;br /&gt;
							table.remove( parentSnaks, i );&lt;br /&gt;
							table.remove( parentEntities, i );&lt;br /&gt;
						elseif ( isPartOfNext( prevLabel, &amp;#039; &amp;#039; .. nextLabel) ) then&lt;br /&gt;
							-- do not output same label if it&amp;#039;s part of previos&lt;br /&gt;
							table.remove( parentSnaks, i - 1 );&lt;br /&gt;
							table.remove( parentEntities, i - 1 );&lt;br /&gt;
						end&lt;br /&gt;
						i = i - 1;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if ( isSkipTopLevel( parentEntities[ #parentEntities ] ) ) then&lt;br /&gt;
					table.remove( parentSnaks, #parentEntities );&lt;br /&gt;
					table.remove( parentEntities, #parentEntities );&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				if ( not hasAdditionalQualifiers ) then&lt;br /&gt;
					for i=2,#parentSnaks,1 do&lt;br /&gt;
						local parentSnak = parentSnaks[i];&lt;br /&gt;
&lt;br /&gt;
						local parentOptions = options;&lt;br /&gt;
						-- local parentOptions = mw.clone( options );&lt;br /&gt;
						parentOptions[&amp;#039;text&amp;#039;] = getLabel( context, parentEntities[i], boundaries );&lt;br /&gt;
&lt;br /&gt;
						result = result .. &amp;#039;, &amp;#039; .. context.formatSnak( parentOptions, parentSnak );&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	result =  baseResult .. result .. context.formatRefs( options, statement );&lt;br /&gt;
&lt;br /&gt;
	return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- append entity id from snak to result&lt;br /&gt;
function insertFromSnak( snak, result )&lt;br /&gt;
	if ( snak &lt;br /&gt;
			and snak.datavalue&lt;br /&gt;
			and snak.datavalue.type == &amp;#039;wikibase-entityid&amp;#039;&lt;br /&gt;
			and snak.datavalue.value&lt;br /&gt;
			and snak.datavalue.value[&amp;#039;entity-type&amp;#039;] == &amp;#039;item&amp;#039; ) then&lt;br /&gt;
		table.insert( result, &amp;#039;Q&amp;#039; .. snak.datavalue.value[&amp;#039;numeric-id&amp;#039;] );&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- get current of historic name of place&lt;br /&gt;
function getLabel( context, entity, boundaries )&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local lang = mw.language.getContentLanguage();&lt;br /&gt;
	local langCode = lang:getCode();&lt;br /&gt;
&lt;br /&gt;
	-- name from label&lt;br /&gt;
	-- TODO: lang:getFallbackLanguages()&lt;br /&gt;
	local label = nil;&lt;br /&gt;
	if entity.labels then&lt;br /&gt;
		if entity.labels[langCode] and entity.labels[langCode].value then&lt;br /&gt;
			label = entity.labels[langCode].value;&lt;br /&gt;
		elseif entity.labels.en and entity.labels.en.value then&lt;br /&gt;
			label = entity.labels.en.value;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- name from properties&lt;br /&gt;
	local results = getParentsInBoundariesSnakImpl( context, entity, boundaries, {&lt;br /&gt;
		&amp;#039;P1813[language:&amp;#039; .. langCode .. &amp;#039;]&amp;#039;,&lt;br /&gt;
		&amp;#039;P1448[language:&amp;#039; .. langCode .. &amp;#039;]&amp;#039;,&lt;br /&gt;
		&amp;#039;P1705[language:&amp;#039; .. langCode .. &amp;#039;]&amp;#039;&lt;br /&gt;
	} );&lt;br /&gt;
&lt;br /&gt;
	for r, result in pairs( results ) do&lt;br /&gt;
		if result.datavalue&lt;br /&gt;
				and result.datavalue.value&lt;br /&gt;
				and result.datavalue.value.text then&lt;br /&gt;
			label = result.datavalue.value.text;&lt;br /&gt;
			break;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return label;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function calculateEndDateTimestamp( context, options, statement )&lt;br /&gt;
	if (not context) then error(&amp;#039;context not specified&amp;#039;) end;&lt;br /&gt;
	if (not options) then error(&amp;#039;options not specified&amp;#039;) end;&lt;br /&gt;
	if (not options.entity) then error(&amp;#039;options.entity missing&amp;#039;) end;&lt;br /&gt;
	if (not statement) then error(&amp;#039;statement not specified&amp;#039;) end;&lt;br /&gt;
&lt;br /&gt;
	if ( statement.qualifiers and statement.qualifiers.P582 ) then&lt;br /&gt;
		for i, qualifier in ipairs(statement.qualifiers.P582 ) do&lt;br /&gt;
			local parsedTime = context.parseTimeFromSnak( qualifier );&lt;br /&gt;
			if ( parsedTime ) then&lt;br /&gt;
				return parsedTime;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- TODO: check other &amp;quot;end&amp;quot; properties&lt;br /&gt;
&lt;br /&gt;
	-- no death day&lt;br /&gt;
	return os.time() * 1000;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getFlag( context, countryEntityId, actualDate )&lt;br /&gt;
&lt;br /&gt;
	local countryEntity = mw.wikibase.getEntity( countryEntityId );&lt;br /&gt;
	if ( not countryEntity or not countryEntity.claims or not countryEntity.claims.P41 ) then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local countryFlags = {};&lt;br /&gt;
	local flagImageStatements = countryEntity.claims.P41;&lt;br /&gt;
	for _, flagImageStatement in pairs( countryEntity.claims.P41 ) do&lt;br /&gt;
		if ( flagImageStatement.rank ~= &amp;#039;deprecated&amp;#039; ) then&lt;br /&gt;
			local flagImage;&lt;br /&gt;
			if ( flagImageStatement and flagImageStatement.mainsnak and flagImageStatement.mainsnak.datavalue and flagImageStatement.mainsnak.datavalue.value ) then&lt;br /&gt;
				flagImage = flagImageStatement.mainsnak.datavalue.value;&lt;br /&gt;
			end&lt;br /&gt;
			local flagStartTime = -9223372036854775808;&lt;br /&gt;
			if ( flagImage ) then&lt;br /&gt;
				countryFlags[ flagStartTime ] = flagImage;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local goodFlag = nil;&lt;br /&gt;
	if ( countryFlags ) then&lt;br /&gt;
		local ordered_dates = {}&lt;br /&gt;
		for flagBeginDate in pairs(countryFlags) do&lt;br /&gt;
			table.insert(ordered_dates, flagBeginDate)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(ordered_dates)&lt;br /&gt;
&lt;br /&gt;
		for i = 1, #ordered_dates do&lt;br /&gt;
			local flagBeginDate, flag = ordered_dates[i], countryFlags[ ordered_dates[i] ];&lt;br /&gt;
			if ( actualDate &amp;gt;= flagBeginDate ) then&lt;br /&gt;
				goodFlag = flag;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if ( goodFlag ) then&lt;br /&gt;
		return &amp;#039;[[File:&amp;#039; .. goodFlag .. &amp;#039;|20x15px|border]]&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
	return nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatCountryClaimWithFlag( context, options, statement )&lt;br /&gt;
	if (not context) then error(&amp;#039;context not specified&amp;#039;) end;&lt;br /&gt;
	if (not options) then error(&amp;#039;options not specified&amp;#039;) end;&lt;br /&gt;
	if (not options.entity) then error(&amp;#039;options.entity is missing&amp;#039;) end;&lt;br /&gt;
	if (not statement) then error(&amp;#039;statement not specified&amp;#039;) end;&lt;br /&gt;
&lt;br /&gt;
	local countryEntityId = nil;&lt;br /&gt;
	local countryEntity = nil;&lt;br /&gt;
	if ( statement.mainsnak and statement.mainsnak.datavalue and statement.mainsnak.datavalue.value and statement.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;] ) then&lt;br /&gt;
		countryEntityId = &amp;#039;Q&amp;#039; .. statement.mainsnak.datavalue.value[&amp;quot;numeric-id&amp;quot;];&lt;br /&gt;
		countryEntity = mw.wikibase.getEntity( countryEntityId );&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if not countryEntity then&lt;br /&gt;
		return &amp;#039;&amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;&amp;#039; .. context.formatStatementDefault( context, options, statement ) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local endDateTimestamp = calculateEndDateTimestamp( context, options, statement );&lt;br /&gt;
	local boundaries = getTimeBoundariesFromProperties( context, {&amp;#039;P570&amp;#039;, &amp;#039;P577&amp;#039;, &amp;#039;P571&amp;#039;} );&lt;br /&gt;
&lt;br /&gt;
	local countryOptions = mw.clone( options );&lt;br /&gt;
	if not countryOptions[&amp;#039;text&amp;#039;] or countryOptions[&amp;#039;text&amp;#039;] == &amp;#039;&amp;#039; then&lt;br /&gt;
		countryOptions[&amp;#039;text&amp;#039;] = getLabel( context, countryEntity, boundaries );&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local flag = getFlag( context, countryEntityId, endDateTimestamp );&lt;br /&gt;
&lt;br /&gt;
	if ( flag ) then&lt;br /&gt;
		return flag .. &amp;#039;&amp;amp;nbsp;&amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;&amp;#039; .. context.formatStatementDefault( context, countryOptions, statement ) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return &amp;#039;&amp;lt;span class=&amp;quot;country-name&amp;quot;&amp;gt;&amp;#039; .. context.formatStatementDefault( context, countryOptions, statement ) .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p;&lt;/div&gt;</summary>
		<author><name>Colani</name></author>
	</entry>
</feed>