class Converter::EnglishNumber

Public Class Methods

new(value) click to toggle source
# File lib/num_word_converter.rb, line 10
def initialize(value)
  @value = value
end

Public Instance Methods

get_tens(value) click to toggle source
# File lib/num_word_converter.rb, line 23
def get_tens(value)
  result = ""
  remainder = value % 10
  tens = (value - remainder) / 10
  result += @@tens[tens]
  result += "-#{@@specials[remainder]}" unless remainder == 0
  return result
end
in_english() click to toggle source
# File lib/num_word_converter.rb, line 59
def in_english
  main(@value)
end
main(value) click to toggle source
# File lib/num_word_converter.rb, line 32
def main(value)
  prefix = ""

  # remove decimals
  value > 0 ? value = value.floor : value = value.ceil

  if value < 0
    prefix = "negative "
    value = value.abs
  end

  # return numbers from 1-19 with simple lookup
  return prefix + @@specials[value] if @@specials[value]

  if value >= 1000000000
    return prefix + make_words(value, 1000000000, "billion")
  elsif value >= 1000000
    return prefix + make_words(value, 1000000, "million")
  elsif value >= 1000
    return prefix + make_words(value, 1000, "thousand")
  elsif value >= 100
    return prefix + make_words(value, 100, "hundred")
  else
    return prefix + get_tens(value)
  end
end
make_words(value, divider, title) click to toggle source
# File lib/num_word_converter.rb, line 14
def make_words(value, divider, title)
  result = ""
  remainder = value % divider
  num = (value - remainder) / divider
  result += "#{main(num)} " + title
  result += " #{main(remainder)}" unless remainder == 0
  return result
end