Class: NumbersInWords::ExceptionalNumbers

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/numbers_in_words/exceptional_numbers.rb

Constant Summary collapse

DEFINITIONS =
{
  0 => { number: 'zero', ordinal: 'zeroth' },
  1 => { number: 'one', ordinal: 'first' },
  2 => { number: 'two', ordinal: 'second', fraction: { singular: 'half', plural: 'halves' } },
  3 => { number: 'three', ordinal: 'third' },
  4 => { number: 'four', ordinal: 'fourth', fraction: { singular: 'quarter', plural: 'quarters' } },
  5 => { number: 'five', ordinal: 'fifth' },
  6 => { number: 'six' },
  7 => { number: 'seven' },
  8 => { number: 'eight', ordinal: 'eighth' },
  9 => { number: 'nine', ordinal: 'ninth' },
  10 => { number: 'ten' },
  11 => { number: 'eleven' },
  12 => { number: 'twelve', ordinal: 'twelfth' },
  13 => { number: 'thirteen' },
  14 => { number: 'fourteen' },
  15 => { number: 'fifteen' },
  16 => { number: 'sixteen' },
  17 => { number: 'seventeen' },
  18 => { number: 'eighteen' },
  19 => { number: 'nineteen' },
  20 => { number: 'twenty', ordinal: 'twentieth' },
  30 => { number: 'thirty', ordinal: 'thirtieth' },
  40 => { number: 'forty', ordinal: 'fortieth' },
  50 => { number: 'fifty', ordinal: 'fiftieth' },
  60 => { number: 'sixty', ordinal: 'sixtieth' },
  70 => { number: 'seventy', ordinal: 'seventieth' },
  80 => { number: 'eighty', ordinal: 'eightieth' },
  90 => { number: 'ninety', ordinal: 'ninetieth' }
}.freeze

Instance Method Summary collapse

Instance Method Details

#fraction(denominator: nil, numerator: nil, word: nil) ⇒ Object



59
60
61
62
63
64
65
66
67
# File 'lib/numbers_in_words/exceptional_numbers.rb', line 59

def fraction(denominator: nil, numerator: nil, word: nil)
  raise unless denominator || word

  numerator ||= 1

  denominator ||= NumbersInWords.in_numbers(word)

  Fraction.new(denominator: denominator, numerator: numerator, attributes: DEFINITIONS[denominator])
end

#fraction_lookupObject



51
52
53
# File 'lib/numbers_in_words/exceptional_numbers.rb', line 51

def fraction_lookup
  @fraction_lookup ||= generate_fraction_lookup
end

#fraction_namesObject



43
44
45
# File 'lib/numbers_in_words/exceptional_numbers.rb', line 43

def fraction_names
  @fraction_names ||= determine_fraction_names
end

#lookup(number) ⇒ Object



55
56
57
# File 'lib/numbers_in_words/exceptional_numbers.rb', line 55

def lookup(number)
  to_h[number]
end

#lookup_fraction(words) ⇒ Object



47
48
49
# File 'lib/numbers_in_words/exceptional_numbers.rb', line 47

def lookup_fraction(words)
  fraction_lookup[words]
end

#to_hObject



69
70
71
72
73
# File 'lib/numbers_in_words/exceptional_numbers.rb', line 69

def to_h
  @to_h ||= DEFINITIONS.transform_values do |h|
    h[:number]
  end
end