class Kabal::Language

Public Class Methods

new() click to toggle source
# File lib/kabal/languages/language.rb, line 11
def initialize
  @names = Kabal::Config::YamlLoader.yaml_object "languages/#{lang}"
  support_file = Kabal::Config::YamlLoader.yaml_object('support')
  @supports = support_file[:support][lang]
end

Public Instance Methods

convert(number) click to toggle source
# File lib/kabal/languages/language.rb, line 17
def convert(number)
  if no_supports? number
    error number
  else
    convert_number number
  end
end
convert_number(number) click to toggle source
# File lib/kabal/languages/language.rb, line 25
def convert_number(number)
  @number_name = nil
  if need_minus? number
    join_with_spaces minus, number_words(-number)
  else
    number_words number
  end
end
count(number) click to toggle source
# File lib/kabal/languages/language.rb, line 88
def count(number)
  number / (10**number_order(number))
end
dot() click to toggle source
# File lib/kabal/languages/language.rb, line 80
def dot
  names[:dot]
end
error(number) click to toggle source
# File lib/kabal/languages/language.rb, line 39
def error(number)
  if number_is_out_of_the_range? number
    Kabal::Errors::NumberOutRangeError.message
  elsif (!supports_fractional?) && (number % 1 != 0)
    Kabal::Errors::NoSupportForFractionalNumberOnCurrentLanguages.message
  end
end
fractional_but_no_support_fractional?(number) click to toggle source
# File lib/kabal/languages/language.rb, line 100
def fractional_but_no_support_fractional?(number)
  fractional?(number) && !supports_fractional?
end
join_with_spaces(*words) click to toggle source
# File lib/kabal/languages/language.rb, line 112
def join_with_spaces(*words)
  words.to_a.join space
end
lang() click to toggle source
# File lib/kabal/languages/language.rb, line 47
def lang
  languages = Kabal::Config::YamlLoader.yaml_object 'languages'
  @lang = languages[self.to_s.split(':')[-2]]
end
max_value() click to toggle source
# File lib/kabal/languages/language.rb, line 64
def max_value
  eval @supports[:natural][:max]
end
min_value() click to toggle source
# File lib/kabal/languages/language.rb, line 60
def min_value
  eval @supports[:natural][:min]
end
minus() click to toggle source
# File lib/kabal/languages/language.rb, line 72
def minus
  names[:minus]
end
names() click to toggle source
# File lib/kabal/languages/language.rb, line 68
def names
  @names[lang]
end
no_supports?(number) click to toggle source
# File lib/kabal/languages/language.rb, line 104
def no_supports?(number)
  fractional_but_no_support_fractional?(number) || number_is_out_of_the_range?(number)
end
number_is_out_of_the_range?(number) click to toggle source
# File lib/kabal/languages/language.rb, line 96
def number_is_out_of_the_range?(number)
  number >= max_value || number <= min_value
end
number_order(number) click to toggle source
# File lib/kabal/languages/language.rb, line 84
def number_order(number)
  ((number.to_s.length - 1) / 3) * 3
end
number_words(number) click to toggle source
# File lib/kabal/languages/language.rb, line 34
def number_words(number)
  return natural_number_name number.round if natural? number
  fractional_number_name number if fractional? number
end
space() click to toggle source
# File lib/kabal/languages/language.rb, line 108
def space
  ' '
end
supports_fractional?() click to toggle source
# File lib/kabal/languages/language.rb, line 92
def supports_fractional?
  @supports[:fractional]
end
supports_natural?() click to toggle source
# File lib/kabal/languages/language.rb, line 52
def supports_natural?
  @supports[:natural]
end
supports_negative?() click to toggle source
# File lib/kabal/languages/language.rb, line 56
def supports_negative?
  min_value < 0
end
whole() click to toggle source
# File lib/kabal/languages/language.rb, line 76
def whole
  names[:whole]
end