module NumberToText

Constants

VERSION

Private Class Methods

convert(number) click to toggle source
# File lib/numbertotext.rb, line 30
def self.convert(number)
  if number < 0
    return 'minus ' + convert(-1*number)
  elsif number < 20 && number > -1
    return @dictionary1[number]
  elsif number < 100 && number > 19
    convert_20_to_99(number)
  elsif number < 1000 && number > 99
    return generic_convert(number,100,'hundred')
  elsif number < 1000000 && number > 999
    return generic_convert(number,1000,'thousand')
  elsif number < 1000000000 && number > 999999
    return generic_convert(number,1000000,'million')
  elsif number < 1000000000000 && number > 999999999
    return generic_convert(number,1000000000,'billion')
  else
    return 'number too large. please try with a number lower than or equal to 999999999999'
  end
end
convert_20_to_99(number) click to toggle source

special case for 20 to 99: requires lookup on dictionary two and numbers are formatted with a hyphen in the middle. also uses recursion to convert remainder

# File lib/numbertotext.rb, line 22
def self.convert_20_to_99(number)
  tens = number / 10
  remainder = number - tens * 10
  return @dictionary2[tens] if remainder == 0
  return @dictionary2[tens] + '-' + convert(remainder) if remainder > 0
end
generic_convert(number,multiple,text) click to toggle source

generic convert: uses recursion to convert numbers above 100

# File lib/numbertotext.rb, line 12
def self.generic_convert(number,multiple,text)
  whole = number / multiple
  remainder = number - whole * multiple
  return convert(whole) + ' ' + text if remainder == 0
  return convert(whole) + ' ' + text + ' and ' + convert(remainder) if (remainder < 100 && remainder > 0)
  return convert(whole) + ' ' + text + ', ' + convert(remainder) if remainder > 99
end