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