# File lib/facet/lisp-format.rb, line 847 def ordinal(n) return 'zeroth' if n.zero? out = [] if n < 0 out << 'minus' n = n.abs end hundreds, tens_ones = n.divmod(100) if hundreds > 0 out << cardinal(hundreds * 100) + (tens_ones.zero? ? 'th' : '') end if tens_ones >= 20 tens, ones = tens_ones.divmod(10) if ones.zero? out << @@ordinal_tens[tens] else out << @@names[tens * 10] + '-' + @@ordinal_ones[ones] end elsif tens_ones > 0 out << @@ordinal_ones[tens_ones] end out.join(' ') end