Для документации этого модуля может быть создана страница Модуль:Wikidata/Flags/doc
local p = {}; function p.getFlag( parseTimeFromSnak, countryEntityOrId, actualDate ) local flagClaims; if type( countryEntityOrId ) == "string" then flagClaims = mw.wikibase.getAllStatements( countryEntityOrId, 'P41' ) elseif countryEntityOrId and countryEntityOrId.claims and countryEntityOrId.claims.P41 then flagClaims = countryEntityOrId.claims.P41 end if not flagClaims or #flagClaims == 0 then return nil; end local countryFlags = {}; for _, flagImageStatement in pairs( flagClaims ) do if flagImageStatement.rank ~= 'deprecated' then local flagImage; if flagImageStatement and flagImageStatement.mainsnak and not (flagImageStatement.qualifiers and flagImageStatement.qualifiers.P366) then if flagImageStatement.mainsnak.datavalue and flagImageStatement.mainsnak.datavalue.value then flagImage = flagImageStatement.mainsnak.datavalue.value; elseif flagImageStatement.mainsnak.snaktype == 'novalue' then flagImage = 'novalue'; end end local flagStartTime = -9223372036854775808; if flagImageStatement.qualifiers and flagImageStatement.qualifiers.P580 and flagImageStatement.qualifiers.P580[ 1 ] then if type( parseTimeFromSnak ) == 'table' then parseTimeFromSnak = parseTimeFromSnak.parseTimeFromSnak; end local parsedFlagStartTime = parseTimeFromSnak( flagImageStatement.qualifiers.P580[ 1 ] ); if parsedFlagStartTime then flagStartTime = parsedFlagStartTime; end end if flagImage then countryFlags[ flagStartTime ] = flagImage; end end end local goodFlag = nil; if countryFlags then local ordered_dates = {}; for flagBeginDate in pairs( countryFlags ) do table.insert( ordered_dates, flagBeginDate ); end table.sort( ordered_dates ); for i = 1, #ordered_dates do local flagBeginDate, flag = ordered_dates[ i ], countryFlags[ ordered_dates[ i ] ]; if actualDate >= flagBeginDate then goodFlag = flag; end end end if goodFlag then if goodFlag == 'novalue' then return nil; end if goodFlag == 'Flag of Belgium.svg' then goodFlag = 'Flag of Belgium (civil).svg'; end return '[[File:' .. goodFlag .. '|20x15px|border|link=|alt=]]'; end return nil; end return p;