Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Sep 7th, 2012  |  syntax: None  |  size: 1.37 KB  |  hits: 6  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. module InWords
  2.   def in_words()
  3.     written_num =
  4.       ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty"]
  5.     written_special_num = { 3 => "thir", 4 => "for", 5 => "fif", 11 => "eleven", 12 => "twelve", 20 => "twenty" }
  6.     num_in_words = ""
  7.     num = self.to_s.split(//)
  8.    
  9.     if self < 1000
  10.      
  11.       if (self < 20)
  12.         return written_num[self]
  13.       end
  14.      
  15.       if (self >= 100) && (self < 1000)
  16.         num_in_words = written_num[num[0].to_i] + " hundred "
  17.       end
  18.            
  19.       if (self < 100)
  20.         num = [0, num[0], num[1]]
  21.       end
  22.  
  23.       case num[1].to_i
  24.       when 1
  25.         return num_in_words + written_num[[num[1], num[2]].join.to_i].to_s
  26.       when 2
  27.         num_in_words += written_num[20].to_s #+ " " + written_num[num[2]]
  28.       when 3..5
  29.         num_in_words += written_special_num[num[1].to_i].to_s + "ty "# + written_num[num[2]]
  30.       when 6..9
  31.         num_in_words += written_num[num[1].to_i].to_s + "ty " #+ written_num[num[2]]
  32.       else
  33.         #num_in_words += written_num[num[2].to_i].to_s
  34.       end
  35.  
  36.       return num_in_words + written_num[num[2].to_i].to_s
  37.  
  38.     else
  39.       puts "Your number is not less than 1000"
  40.       return num_in_words
  41.     end
  42.   end
  43. end
  44.  
  45. class Fixnum
  46.   include InWords
  47. end