Class: Kabal::English
- Defined in:
- lib/kabal/languages/english.rb
Instance Method Summary collapse
- #convert(number) ⇒ Object
- #count(number) ⇒ Object
- #count_name(number) ⇒ Object
- #create_number_name(number) ⇒ Object
- #less_thousands(number) ⇒ Object
- #number_is_thousands?(number) ⇒ Boolean
- #number_order(number) ⇒ Object
- #single(number) ⇒ Object
- #ten_powers(number) ⇒ Object
- #three_words(number) ⇒ Object
- #two_words(number) ⇒ Object
Methods inherited from Language
Instance Method Details
#convert(number) ⇒ Object
4 5 6 7 8 9 10 |
# File 'lib/kabal/languages/english.rb', line 4 def convert(number) raise NumberOutRangeError. if number < 0 or number >= 10 ** 12 return single number if number >= 0 and number <= 19 return two_words number if number >= 0 and number <= 99 return three_words number if number >= 100 and number <= 999 ten_powers number if number >= 100 end |
#count(number) ⇒ Object
42 43 44 |
# File 'lib/kabal/languages/english.rb', line 42 def count(number) number / (10 ** number_order(number)) end |
#count_name(number) ⇒ Object
54 55 56 |
# File 'lib/kabal/languages/english.rb', line 54 def count_name(number) three_words count(number) end |
#create_number_name(number) ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/kabal/languages/english.rb', line 46 def create_number_name(number) if @number_name.nil? @number_name = count_name(number) + " " + names[lang]["ten_powers"][number_order(number)] elsif count(number) != 0 @number_name += " " + count_name(number) + " " + names[lang]["ten_powers"][number_order(number)] end end |
#less_thousands(number) ⇒ Object
58 59 60 61 |
# File 'lib/kabal/languages/english.rb', line 58 def less_thousands(number) @number_name += " and" if number < 100 @number_name += " " + three_words(number % 1000) unless number == 0 end |
#number_is_thousands?(number) ⇒ Boolean
63 64 65 |
# File 'lib/kabal/languages/english.rb', line 63 def number_is_thousands?(number) number_order(number) < 3 end |
#number_order(number) ⇒ Object
38 39 40 |
# File 'lib/kabal/languages/english.rb', line 38 def number_order(number) ((number.to_s.length - 1) / 3) * 3 end |
#single(number) ⇒ Object
12 13 14 |
# File 'lib/kabal/languages/english.rb', line 12 def single(number) names[lang]["single"][number] end |
#ten_powers(number) ⇒ Object
31 32 33 34 35 36 |
# File 'lib/kabal/languages/english.rb', line 31 def ten_powers(number) less_thousands number if number_is_thousands? number return @number_name if number_is_thousands? number create_number_name number ten_powers number % (10 ** number_order(number)) end |
#three_words(number) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/kabal/languages/english.rb', line 23 def three_words(number) return two_words number if number <= 99 number_name = single(number / 100) + " " + names[lang]["ten_powers"][2] number_name += " " + two_words(number % 100) if (number % 100 >= 10) number_name += " and " + single(number % 100) if (number % 100 < 10) number_name end |
#two_words(number) ⇒ Object
16 17 18 19 20 21 |
# File 'lib/kabal/languages/english.rb', line 16 def two_words(number) return single number if number <= 19 number_name = names[lang]["two_words"][number / 10] number_name += " " + single(number % 10) if (number % 10 != 0) number_name end |