Module:Sandbox/Batternut/Ordinal

Source: Wikipedia, the free encyclopedia.
-- vim: set noexpandtab ft=lua ts=4 sw=4:
require('strict')

local o = {}
local debug = false

--[[
makeOrdinal

This function returns an ordinal string for the target number.

Usage:
{{#invoke:Ordinal|makeOrdinal|target_num|}}

Parameters
    1: The string whose length to report
    2: the language code

If invoked using named parameters, Mediawiki will automatically remove any leading or
trailing whitespace from the target string.  
]]
function o.makeOrdinal( target_num, langcode )
	if langcode == 'fr' then
		if target_num == 1 then
	    	return target_num .. 'er'
    	else
			return target_num .. 'e'
		end
	elseif langcode == 'en' then
		if target_num == 11 or target_num == 12 or target_num == 13 then
	    	return target_num .. 'th'
		elseif target_num % 10 == 1 then
			return target_num .. 'st'
		elseif target_num % 10 == 2 then
			return target_num .. 'nd'
		elseif target_num % 10 == 3 then
			return target_num .. 'rd'
		else
			return target_num .. 'th'
		end
	else
		return target_num .. '.'
	end
end

return o