Class: Kabal::Language

Inherits:
Object
  • Object
show all
Defined in:
lib/kabal/languages/language.rb

Direct Known Subclasses

English, Russian

Instance Method Summary collapse

Constructor Details

#initializeLanguage

Returns a new instance of Language.



3
4
5
6
# File 'lib/kabal/languages/language.rb', line 3

def initialize
  @names = Kabal::Config::YamlLoader.yaml_object "languages/#{lang}"
  @supports = Kabal::Config::YamlLoader.yaml_object("support")["support"][lang]
end

Instance Method Details

#check_supports_for(number) ⇒ Object



73
74
75
76
77
78
79
80
# File 'lib/kabal/languages/language.rb', line 73

def check_supports_for(number)
  if number % 1 != 0 and not supports_fractional?
    raise NoSupportForFractionalNumberOnCurrentLanguages.message
  end
  if number >= max_value or number <= min_value
    raise NumberOutRangeError.message
  end
end

#convert(number) ⇒ Object



8
9
10
11
# File 'lib/kabal/languages/language.rb', line 8

def convert(number)
  check_supports_for number
  convert_number number
end

#count(number) ⇒ Object



69
70
71
# File 'lib/kabal/languages/language.rb', line 69

def count(number)
  number / (10 ** number_order(number))
end

#fractional?(number) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/kabal/languages/language.rb', line 48

def fractional?(number)
  number % 1 != 0
end

#langObject



13
14
15
16
# File 'lib/kabal/languages/language.rb', line 13

def lang
  languages = Kabal::Config::YamlLoader.yaml_object "languages"
  @lang = languages[self.to_s.split(":")[-2]]
end

#max_valueObject



28
29
30
# File 'lib/kabal/languages/language.rb', line 28

def max_value
  eval @supports["natural"]["max"]
end

#min_valueObject

TODO реализовать метод supports_negative?



24
25
26
# File 'lib/kabal/languages/language.rb', line 24

def min_value
  eval @supports["natural"]["min"]
end

#minusObject



40
41
42
# File 'lib/kabal/languages/language.rb', line 40

def minus
  names["minus"]
end

#namesObject



36
37
38
# File 'lib/kabal/languages/language.rb', line 36

def names
  @names[lang]
end

#natural?(number) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/kabal/languages/language.rb', line 53

def natural?(number)
  number % 1 == 0
end

#number_is_google?(number) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/kabal/languages/language.rb', line 61

def number_is_google?(number)
  count(number) == 10 and number_order(number) == 99
end

#number_is_thousands?(number) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/kabal/languages/language.rb', line 57

def number_is_thousands?(number)
  number_order(number) < 3
end

#number_order(number) ⇒ Object



65
66
67
# File 'lib/kabal/languages/language.rb', line 65

def number_order(number)
  ((number.to_s.length - 1) / 3) * 3
end

#supports_fractional?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/kabal/languages/language.rb', line 32

def supports_fractional?
  @supports["fractional"]
end

#supports_natural?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/kabal/languages/language.rb', line 18

def supports_natural?
  @supports["natural"]
end

#wholeObject



44
45
46
# File 'lib/kabal/languages/language.rb', line 44

def whole
  names["whole"]
end