class CalendariumRomanum::Ordinalizer
Knows how to produce localized ordinals.
Used by {Temporale} for building names of Sundays and ferials.
Public Class Methods
ordinal(number, locale: nil)
click to toggle source
@param number [Integer] number to build ordinal for @param locale [Symbol,nil]
locale; +I18n.locale+ (i.e. the `i18n` gem's current locale) is used if not provided
@return [String, Integer]
ordinal, or unchanged +number+ if +Ordinalizer+ cannot build ordinals for the given locale
# File lib/calendarium-romanum/ordinalizer.rb, line 16 def ordinal(number, locale: nil) locale ||= I18n.locale case locale when :cs "#{number}." when :en english_ordinal(number) when :fr french_ordinal(number) when :la, :it RomanNumerals.to_roman number else number end end
Private Class Methods
english_ordinal(number)
click to toggle source
# File lib/calendarium-romanum/ordinalizer.rb, line 35 def english_ordinal(number) modulo = number % 10 modulo = 9 if number / 10 == 1 case modulo when 1 "#{number}st" when 2 "#{number}nd" when 3 "#{number}rd" else "#{number}th" end end
french_ordinal(number)
click to toggle source
# File lib/calendarium-romanum/ordinalizer.rb, line 51 def french_ordinal(number) case number when 1 '1er' else "#{number}ème" end end