Module:Sandbox/Batternut/Ordinal

-- 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