<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ASportsRankings</id>
	<title>Module:SportsRankings - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ASportsRankings"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:SportsRankings&amp;action=history"/>
	<updated>2026-06-14T06:51:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:SportsRankings&amp;diff=479522&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:SportsRankings&amp;diff=479522&amp;oldid=prev"/>
		<updated>2021-07-16T06:07:10Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require('Module:No globals');&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local p = {} &lt;br /&gt;
&lt;br /&gt;
local error_msg = '&amp;lt;span style=\&amp;quot;font-size:100%\&amp;quot; class=\&amp;quot;error\&amp;quot;&amp;gt;&amp;lt;code style=\&amp;quot;color:inherit; border:inherit; padding:inherit;\&amp;quot;&amp;gt;&amp;amp;#124;_template=&amp;lt;/code&amp;gt; missing or empty&amp;lt;/span&amp;gt;';&lt;br /&gt;
&lt;br /&gt;
-- data for various rankings held in module subpages, e.g. &amp;quot;Module:SportsRankings/data/FIFA World Rankings&amp;quot;&lt;br /&gt;
local data = {}      --[[ parameters containing data help in three tables&lt;br /&gt;
						data.source = {}     -- parameters for using in cite web (title, url, website)&lt;br /&gt;
						data.updated = {}    -- date of latest update (month, day, year)&lt;br /&gt;
						data.rankings = {}   -- the rankings list (country code, ranking, movement)&lt;br /&gt;
					    data.alias = {}      -- alias list (country code, country name [=key])&lt;br /&gt;
					    &lt;br /&gt;
					--]]&lt;br /&gt;
&lt;br /&gt;
local  templateArgs = {} -- contains arguments from template involking module&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function getArgs(frame)&lt;br /&gt;
	local parents = mw.getCurrentFrame():getParent()&lt;br /&gt;
		&lt;br /&gt;
	for k,v in pairs(parents.args) do&lt;br /&gt;
		--check content&lt;br /&gt;
		if v and v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			templateArgs[k]=v --parents.args[k]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for k,v in pairs(frame.args) do&lt;br /&gt;
		--check content&lt;br /&gt;
		if v and v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
			templateArgs[k]=v --parents.args[k]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- allow empty caption to blank default&lt;br /&gt;
	if parents.args['caption'] then templateArgs['caption'] = parents.args['caption'] end&lt;br /&gt;
	if frame.args['caption'] then templateArgs['caption'] = frame.args['caption'] end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function loadData(frame)&lt;br /&gt;
    &lt;br /&gt;
    local source = frame.args[1] -- source of rankings e.g. FIFA World Rankings&lt;br /&gt;
    data = require('Module:SportsRankings/data/'.. source);&lt;br /&gt;
    &lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getDate(option)&lt;br /&gt;
   &lt;br /&gt;
   local dateTable = data.updated         -- there must be date table (data.updated)&lt;br /&gt;
                                          -- TODO add a warning and/or category&lt;br /&gt;
   if option == &amp;quot;LAST&amp;quot; then &lt;br /&gt;
   		local lastDateTable = data.previous &lt;br /&gt;
   		if lastDateTable then             -- there might not be a previous data table (data.previous)&lt;br /&gt;
   			dateTable = lastDateTable&lt;br /&gt;
	   else &lt;br /&gt;
	   		return &amp;quot;No previous date available (data.updated missing)&amp;quot;&lt;br /&gt;
       end&lt;br /&gt;
   end&lt;br /&gt;
   &lt;br /&gt;
   if templateArgs['mdy'] and templateArgs['mdy'] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
   	   return dateTable['month'] .. &amp;quot; &amp;quot; .. dateTable['day'] .. &amp;quot;, &amp;quot; .. dateTable['year']&lt;br /&gt;
   else&lt;br /&gt;
   	   return dateTable['day'] .. &amp;quot; &amp;quot; .. dateTable['month'] .. &amp;quot; &amp;quot; .. dateTable['year']&lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addCiteWeb(frame)  -- use cite web template&lt;br /&gt;
	&lt;br /&gt;
	return frame:expandTemplate{ title = 'cite web' , args = {&lt;br /&gt;
    		url = data.source['url'],            --&amp;quot;https://www.fifa.com/fifa-world-ranking/ranking-table/men/index.html&amp;quot;, &lt;br /&gt;
			title = data.source['title'],        -- &amp;quot;The FIFA/Coca-Cola World Ranking&amp;quot;,&lt;br /&gt;
			website = data.source['website'],    --&amp;quot;FIFA&amp;quot;,&lt;br /&gt;
			['date'] = getDate(),&lt;br /&gt;
			['access-date'] = getDate()&lt;br /&gt;
			}}&lt;br /&gt;
end&lt;br /&gt;
local function addReference(frame)&lt;br /&gt;
	&lt;br /&gt;
	local text = &amp;quot;&amp;quot;&lt;br /&gt;
	if data.source['text'] then text = data.source['text'] end&lt;br /&gt;
	&lt;br /&gt;
	return frame:expandTemplate{ title = 'refn' , args = {&lt;br /&gt;
		name=frame.args[1],                                 --ranking used, e.g. &amp;quot;FIFA World Rankings&amp;quot;,&lt;br /&gt;
	    text .. addCiteWeb(frame)&lt;br /&gt;
	}}&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ the main function returning ranking for one country&lt;br /&gt;
      - takes three-letter country code or name of country as parameters&lt;br /&gt;
      - displays as rank | movement |date&lt;br /&gt;
]]&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	&lt;br /&gt;
    getArgs(frame) -- returns args table having checked for content&lt;br /&gt;
    loadData(frame)&lt;br /&gt;
    local outputString = &amp;quot;&amp;quot;&lt;br /&gt;
    local validCode = false&lt;br /&gt;
    local country = templateArgs[2] -- country name or county code passed as parameter&lt;br /&gt;
    local rank, move&lt;br /&gt;
    &lt;br /&gt;
    if string.len( country) ==  3 then -- if we have a three letter country code &lt;br /&gt;
	    for _,u in pairs(data.alias) do  -- run through alias list { 3-letter code, country name }&lt;br /&gt;
	    	if u[1]==country then        -- if code = passed parameter&lt;br /&gt;
	       		country = u[2]           -- set country name as key for ranking table&lt;br /&gt;
	       		validCode = true&lt;br /&gt;
	       		break&lt;br /&gt;
	       	end&lt;br /&gt;
	    end    &lt;br /&gt;
	    -- if no match of code to country name, set category&lt;br /&gt;
	    if not validCode then&lt;br /&gt;
	    	outputString=&amp;quot;[[Category:Pages using SportsRankings with unknown parameters]]&amp;quot; .. outputString&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    for _,v in pairs(data.rankings) do&lt;br /&gt;
    	if v[1]==country then &lt;br /&gt;
       		rank = v[2]    -- get rank&lt;br /&gt;
       		move = v[3]    -- get move from last ranking&lt;br /&gt;
       		break&lt;br /&gt;
       	end&lt;br /&gt;
    end&lt;br /&gt;
    if not rank then -- no ranking found (do we want a tracking for no rank found?)&lt;br /&gt;
    	rank = 'NR' &lt;br /&gt;
	    --outputString=&amp;quot;[[Category:Pages using SportsRankings with unknown parameters]]&amp;quot; .. outputString&lt;br /&gt;
        --outputString=&amp;quot;[[Category:Pages using SportsRankings with no ranking]]&amp;quot; .. outputString&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if rank ~= 'NR' then&lt;br /&gt;
		outputString = outputString .. ' ' .. rank .. ' '&lt;br /&gt;
		if move &amp;lt; 0 and math.abs( move ) == math.abs( rank ) then -- new teams in ranking: move = -ranking&lt;br /&gt;
			outputString = outputString .. frame:expandTemplate{ title = 'new entry' } &lt;br /&gt;
	    elseif move == 0 then                                    -- if no change in ranking&lt;br /&gt;
	    	outputString = outputString .. frame:expandTemplate{ title = 'steady' } &lt;br /&gt;
	    elseif move &amp;lt; 0 then                                 --  if ranking down&lt;br /&gt;
	    	outputString = outputString .. frame:expandTemplate{ title = 'decrease' } .. ' ' .. math.abs(move)&lt;br /&gt;
	    elseif move &amp;gt; 0 then                                 -- if ranking up&lt;br /&gt;
	    	outputString = outputString .. frame:expandTemplate{ title = 'increase' } .. ' ' .. move&lt;br /&gt;
	    end	&lt;br /&gt;
    else&lt;br /&gt;
    	outputString = outputString .. frame:expandTemplate{ title = 'Abbr', args = { &amp;quot;NR&amp;quot;, &amp;quot;Not ranked&amp;quot;}  }&lt;br /&gt;
    	--	{{Abbr|NR|Not ranked}} &lt;br /&gt;
	end&lt;br /&gt;
	outputString = outputString .. ' (' .. getDate() .. ')'&lt;br /&gt;
	outputString = outputString .. addReference(frame)&lt;br /&gt;
    &lt;br /&gt;
    return outputString&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[  outputs a table of the rankings &lt;br /&gt;
        called by list() or list2() &lt;br /&gt;
        positional parameters - |ranking|first|last the ranking to use, fist and last in table&lt;br /&gt;
        other parameters: |style=               -- CSS styling&lt;br /&gt;
                          |headerN= footerN=    -- displays header and footer rows with additional information&lt;br /&gt;
                          |caption=             -- value of caption to display&lt;br /&gt;
                                                -- by default it generates a caption&lt;br /&gt;
                                                -- this can be suppressed with empty |caption=&lt;br /&gt;
]]&lt;br /&gt;
local function table(frame, ranking, first,last)&lt;br /&gt;
&lt;br /&gt;
    local styleString = &amp;quot;&amp;quot;&lt;br /&gt;
    if templateArgs['style'] and templateArgs['style'] ~= &amp;quot;&amp;quot; then styleString = templateArgs['style'] end&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    local sublist2 = { &amp;quot;ENG&amp;quot;, &amp;quot;SCO&amp;quot;, &amp;quot;WAL&amp;quot;, &amp;quot;IRE&amp;quot;, &amp;quot;NIR&amp;quot;, &amp;quot;FRA&amp;quot;, &amp;quot;England&amp;quot;, &amp;quot;France&amp;quot;, &amp;quot;Germany&amp;quot; }&lt;br /&gt;
    local sublist3 = { &amp;quot;AFG&amp;quot;,&amp;quot;AUS&amp;quot;,&amp;quot;BAN&amp;quot;,&amp;quot;BHR&amp;quot;,&amp;quot;BHU&amp;quot;,&amp;quot;BRU&amp;quot;,&amp;quot;CAM&amp;quot;,&amp;quot;CHN&amp;quot;,&amp;quot;GUM&amp;quot;,&amp;quot;HKG&amp;quot;,&amp;quot;IDN&amp;quot;,&amp;quot;IND&amp;quot;,&amp;quot;IRN&amp;quot;,&amp;quot;IRQ&amp;quot;,&amp;quot;JOR&amp;quot;,&lt;br /&gt;
    	              &amp;quot;JPN&amp;quot;,&amp;quot;KGZ&amp;quot;,&amp;quot;KOR&amp;quot;,&amp;quot;KSA&amp;quot;,&amp;quot;KUW&amp;quot;,&amp;quot;LAO&amp;quot;,&amp;quot;LIB&amp;quot;,&amp;quot;MAC&amp;quot;,&amp;quot;MAS&amp;quot;,&amp;quot;MDV&amp;quot;,&amp;quot;MNG&amp;quot;,&amp;quot;MYA&amp;quot;,&amp;quot;NEP&amp;quot;,&amp;quot;OMA&amp;quot;,&amp;quot;PAK&amp;quot;,&lt;br /&gt;
    	              &amp;quot;PHI&amp;quot;,&amp;quot;PLE&amp;quot;,&amp;quot;PRK&amp;quot;,&amp;quot;QAT&amp;quot;,&amp;quot;SIN&amp;quot;,&amp;quot;SRI&amp;quot;,&amp;quot;SYR&amp;quot;,&amp;quot;THA&amp;quot;,&amp;quot;TJK&amp;quot;,&amp;quot;TKM&amp;quot;,&amp;quot;TLS&amp;quot;,&amp;quot;TPE&amp;quot;,&amp;quot;UAE&amp;quot;,&amp;quot;UZB&amp;quot;,&amp;quot;VIE&amp;quot;,&lt;br /&gt;
    	              &amp;quot;YEM&amp;quot; }&lt;br /&gt;
    local lastRank = 0&lt;br /&gt;
    local selectCount = 0&lt;br /&gt;
    local selectData = nil&lt;br /&gt;
    local selectList = nil&lt;br /&gt;
    if templateArgs['select'] then &lt;br /&gt;
    	if data.confederation[templateArgs['select']] then&lt;br /&gt;
	    	selectList = templateArgs['select']&lt;br /&gt;
	    	selectData = data.confederation[selectList]&lt;br /&gt;
	    	selectCount = 1&lt;br /&gt;
    	end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- column header customisation&lt;br /&gt;
    local rankHeader = templateArgs['rank_header'] or &amp;quot;Rank&amp;quot;&lt;br /&gt;
    local selectionHeader = templateArgs['selection_header'] or selectList or &amp;quot;Rank&amp;quot;&lt;br /&gt;
    local teamHeader = templateArgs['team_header'] or &amp;quot;Team&amp;quot;&lt;br /&gt;
    local pointsHeader = templateArgs['points_header'] or &amp;quot;Points&amp;quot;&lt;br /&gt;
    local changeHeader = templateArgs['change_header'] or &amp;quot;Change&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    --start table&lt;br /&gt;
    local outputString = '{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center;' .. styleString .. '&amp;quot;'&lt;br /&gt;
    &lt;br /&gt;
    -- add default or custom caption&lt;br /&gt;
    local caption = ranking .. ' as of ' .. getDate() .. '.'&lt;br /&gt;
    if templateArgs['caption'] and templateArgs['caption']  ~= &amp;quot;&amp;quot; then &lt;br /&gt;
    	caption = templateArgs['caption'] &lt;br /&gt;
    	caption = p.replaceKeywords(caption)&lt;br /&gt;
    end&lt;br /&gt;
    if not (templateArgs['caption'] and templateArgs['caption']  == &amp;quot;&amp;quot;) then &lt;br /&gt;
		outputString = outputString ..	'\n|+' .. caption .. addReference(frame)&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- add header rows (logo, date of update etc)&lt;br /&gt;
    local count = 0&lt;br /&gt;
    local header = {}&lt;br /&gt;
    local tableWidth = 4&lt;br /&gt;
    if selectList then tableWidth = 5 end&lt;br /&gt;
    while count &amp;lt; 5 do&lt;br /&gt;
    	count = count + 1&lt;br /&gt;
	    if templateArgs['header'..count] then&lt;br /&gt;
	    	header[count] = templateArgs['header'..count] &lt;br /&gt;
	    	header[count] = p.replaceKeywords( header[count])&lt;br /&gt;
	    	outputString = outputString ..	'\n|-\n| colspan=&amp;quot;'.. tableWidth .. '&amp;quot; |' .. header[count]&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    -- add the add part of the table&lt;br /&gt;
    local optionalColumn = &amp;quot;&amp;quot;&lt;br /&gt;
    if selectList then&lt;br /&gt;
    	optionalColumn = '\n!' .. selectionHeader &lt;br /&gt;
    end&lt;br /&gt;
   	outputString = outputString .. '\n|-' .. optionalColumn&lt;br /&gt;
    	                        .. '\n!' .. rankHeader .. '\n!' .. changeHeader &lt;br /&gt;
    	                        .. '\n!' .. teamHeader .. '\n!' .. pointsHeader&lt;br /&gt;
   &lt;br /&gt;
    local change,code = '', ''&lt;br /&gt;
    --while i&amp;lt;last do &lt;br /&gt;
    for k,v in pairs(data.rankings) do&lt;br /&gt;
	   --v[2] = tonumber(v[2])&lt;br /&gt;
	   if v[2] &amp;gt;= first and v[2] &amp;lt;= last then &lt;br /&gt;
&lt;br /&gt;
		   for _,u in pairs(data.alias) do  -- get country code from name&lt;br /&gt;
		    	if u[2]==v[1] then &lt;br /&gt;
		       		code = u[1]    -- if alias (country code) then use country name as key&lt;br /&gt;
		       		break&lt;br /&gt;
		       	end&lt;br /&gt;
		    end   &lt;br /&gt;
	   	   &lt;br /&gt;
	   	    local continue = true&lt;br /&gt;
	   	    if selectList then                 -- select from list&lt;br /&gt;
	   	   	    continue = false &lt;br /&gt;
	   			for _,u in pairs(selectData) do&lt;br /&gt;
	   				if u == v[1] or u == code then &lt;br /&gt;
	   					continue = true &lt;br /&gt;
	   					break&lt;br /&gt;
	   				end&lt;br /&gt;
	   			end&lt;br /&gt;
	   	    end&lt;br /&gt;
		&lt;br /&gt;
			if continue ==true  then &lt;br /&gt;
	   	   &lt;br /&gt;
			   local rowString = '\n|-'&lt;br /&gt;
			   if selectList then &lt;br /&gt;
			   	    local selectRank = selectCount&lt;br /&gt;
			   	    if v[2]==lastRank then selectRank = selectCount -1 end -- only handles two at same rank&lt;br /&gt;
					rowString = rowString ..  '\n|' .. selectRank &lt;br /&gt;
					selectCount = selectCount + 1&lt;br /&gt;
			   end&lt;br /&gt;
			   rowString = rowString .. '\n|' .. v[2]  -- rank&lt;br /&gt;
			   lastRank = v[2]&lt;br /&gt;
			   &lt;br /&gt;
			   local move = v[3]&lt;br /&gt;
			   if move &amp;lt; 0 and math.abs( move ) == math.abs( v[2] ) then -- new teams in ranking: move = -ranking&lt;br /&gt;
					change = frame:expandTemplate{ title = 'new entry' } &lt;br /&gt;
			   elseif move == 0 then                                    -- if no change in ranking&lt;br /&gt;
			    	change = frame:expandTemplate{ title = 'steady' } &lt;br /&gt;
			    elseif move &amp;lt; 0 then                                 --  if ranking down&lt;br /&gt;
			    	change = frame:expandTemplate{ title = 'decrease' } .. ' ' .. math.abs(move)&lt;br /&gt;
			    elseif move &amp;gt; 0 then                                 -- if ranking up&lt;br /&gt;
			    	change = frame:expandTemplate{ title = 'increase' } .. ' ' .. move&lt;br /&gt;
			    end	&lt;br /&gt;
			   rowString = rowString .. '||' .. change&lt;br /&gt;
			   &lt;br /&gt;
	--[[		   for _,u in pairs(data.alias) do&lt;br /&gt;
			    	if u[2]==v[1] then &lt;br /&gt;
			       		code = u[1]    -- if alias (country code) then use country name as key&lt;br /&gt;
			       		break&lt;br /&gt;
			       	end&lt;br /&gt;
			    end   &lt;br /&gt;
	]]		   &lt;br /&gt;
			   --TODO reorganise the following with better logic&lt;br /&gt;
			   --[[ template to display flag icon and team link (e.g. fb, fbw, bk, ih)&lt;br /&gt;
			       e.g.  &amp;quot;FIFA World Rankings&amp;quot; = 'fb', &amp;quot;FIFA Women's World Rankings&amp;quot; 'fbw',&lt;br /&gt;
			             &amp;quot;FIBA World Rankings&amp;quot; = 'bk', &amp;quot;IIHF World Ranking&amp;quot;  = 'ih'  &lt;br /&gt;
			       tries with country code, then if error, tried with country name]]&lt;br /&gt;
			   local countryTemplate = data.templates['flagged_team_link'] &lt;br /&gt;
			   local countryIconString = frame:expandTemplate{ title = countryTemplate, args = {code} }    -- country&lt;br /&gt;
	 		   local _,test =  string.gsub( countryIconString, &amp;quot;Template:Country data&amp;quot;, &amp;quot;&amp;quot;) -- page does not exist&lt;br /&gt;
	 		   if test == 1 then -- if error try country name&lt;br /&gt;
	 		   	  countryIconString = frame:expandTemplate{ title = countryTemplate, args = {v[1]} }&lt;br /&gt;
	 		   	  --countryIconString = &amp;quot;testing&amp;quot;&lt;br /&gt;
	 		   else &lt;br /&gt;
	 		   	 -- countryIconString = &amp;quot;exists&amp;quot;&lt;br /&gt;
	 		   end&lt;br /&gt;
	 		   	  &lt;br /&gt;
	 		   rowString = rowString .. '\n|style=&amp;quot;text-align:left&amp;quot;|' .. countryIconString&lt;br /&gt;
			   &lt;br /&gt;
			   local points = &amp;quot;&amp;quot;&lt;br /&gt;
			   if v[4] then points = v[4] end&lt;br /&gt;
			   rowString = rowString ..  '||' .. points       -- country for now, later points&lt;br /&gt;
			   outputString = outputString .. rowString&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
    -- add footer rows&lt;br /&gt;
    count = 0&lt;br /&gt;
    local footer = {}&lt;br /&gt;
    while count &amp;lt; 5 do&lt;br /&gt;
    	count = count + 1&lt;br /&gt;
	    if templateArgs['footer'..count] then&lt;br /&gt;
	    	footer[count] = templateArgs['footer'..count] &lt;br /&gt;
	    	footer[count] = p.replaceKeywords(footer[count])&lt;br /&gt;
	    	outputString = outputString ..	'\n|-\n| colspan=&amp;quot;'.. tableWidth .. '&amp;quot; |' .. footer[count]&lt;br /&gt;
	    end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    outputString = outputString .. &amp;quot;\n|}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return outputString&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
function p.replaceKeywords(keyword)&lt;br /&gt;
	keyword =  string.gsub( keyword, &amp;quot;INSERT_UPDATE_DATE&amp;quot;, getDate())&lt;br /&gt;
    keyword =  string.gsub( keyword, &amp;quot;INSERT_LAST_DATE&amp;quot;, getDate(&amp;quot;LAST&amp;quot;))&lt;br /&gt;
	if string.find(keyword, &amp;quot;INSERT_REFERENCE&amp;quot;) then&lt;br /&gt;
		keyword =  string.gsub( keyword, &amp;quot;INSERT_REFERENCE&amp;quot;, addReference(mw.getCurrentFrame()))&lt;br /&gt;
	end&lt;br /&gt;
    return keyword&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ create a table of rankings&lt;br /&gt;
       parameters:  |ranking=        -- ranking to display (e.g. FIFA World Rankings)&lt;br /&gt;
                    |first= |last=   -- first and last ranking to display (defaults 1-10)&lt;br /&gt;
]]&lt;br /&gt;
function p.list(frame)&lt;br /&gt;
&lt;br /&gt;
    getArgs(frame) -- returns args table having checked for content&lt;br /&gt;
    loadData(frame)	&lt;br /&gt;
    local ranking = frame.args[1]&lt;br /&gt;
    &lt;br /&gt;
    local first = tonumber(frame.args['2']) or 1&lt;br /&gt;
    local last = tonumber(frame.args['3']) or 10&lt;br /&gt;
    &lt;br /&gt;
    return table(frame, ranking, first, last)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[ create a particla table of rankings above and below a country &lt;br /&gt;
       parameters:  |ranking |country |span     &lt;br /&gt;
                                              -- ranking - the ranking to display (e.g. FIFA World Rankings)&lt;br /&gt;
                                              -- country - country table is centred around&lt;br /&gt;
                                              -- span=   - rows to display above and below country&lt;br /&gt;
]]&lt;br /&gt;
function p.list2(frame)&lt;br /&gt;
&lt;br /&gt;
    getArgs(frame) -- returns args table having checked for content&lt;br /&gt;
    loadData(frame)	&lt;br /&gt;
    local ranking = frame.args[1]&lt;br /&gt;
    local first, last = 1,10&lt;br /&gt;
    local country = frame.args[2]           -- name or code of country to center table around&lt;br /&gt;
    local span = frame.args[3] or 2         -- number of rows to display above and below country (default:2)&lt;br /&gt;
    &lt;br /&gt;
    if string.len(country) == 3 then        -- if three letter country code&lt;br /&gt;
    		for _,u in pairs(data.alias) do&lt;br /&gt;
		    	if u[1]==country then &lt;br /&gt;
		       		country = u[2]          -- if country code then use country name &lt;br /&gt;
		       		break&lt;br /&gt;
		       	end&lt;br /&gt;
		    end   &lt;br /&gt;
    end&lt;br /&gt;
    for k,v in pairs(data.rankings) do      -- find position of country in rankings&lt;br /&gt;
       if v[1] == country then&lt;br /&gt;
       	  first = v[2]-span&lt;br /&gt;
       	  last = v[2]+span&lt;br /&gt;
       end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return table(frame, ranking, first, last)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>