inflections-0.1.0.4: Text/Inflections/Ordinal.hs
module Text.Inflections.Ordinal (ordinal, ordinalize)
where
-- |Returns the suffix that should be added to a number to denote the position
-- in an ordered sequence such as 1st, 2nd, 3rd, 4th.
ordinal :: Integer -> String
ordinal number
| remainder100 `elem` [11..13] = "th"
| remainder10 == 1 = "st"
| remainder10 == 2 = "nd"
| remainder10 == 3 = "rd"
| otherwise = "th"
where abs_number = abs number
remainder10 = abs_number `mod` 10
remainder100 = abs_number `mod` 100
-- |Turns a number into an ordinal string used to denote the position in an
-- ordered sequence such as 1st, 2nd, 3rd, 4th.
ordinalize :: Integer -> String
ordinalize n = show n ++ ordinal n