Module: Kabal::RussianRules::FractionalNumbers

Included in:
Kabal::Russian
Defined in:
lib/kabal/languages/russian/fractional_numbers.rb

Instance Method Summary collapse

Instance Method Details

#fractional_number_name(number) ⇒ Object



4
5
6
# File 'lib/kabal/languages/russian/fractional_numbers.rb', line 4

def fractional_number_name(number)
  whole_part_name(number) + " " + fractional_part_name(number)
end

#fractional_number_order(number) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/kabal/languages/russian/fractional_numbers.rb', line 40

def fractional_number_order(number)
  #FIXME find better way with whole 0 numbers
  number_string = number.to_s
  if number_string.include? "-"
    number_string.split('-')[1].to_i
  else
    number_string.split('.')[1].length
  end
end

#fractional_order_word(number) ⇒ Object



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

def fractional_order_word(number)
  names["fractional_ten_powers"][fractional_number_order(number) - (fractional_number_order(number) % 3)]
end

#fractional_part_name(number) ⇒ Object



8
9
10
11
12
# File 'lib/kabal/languages/russian/fractional_numbers.rb', line 8

def fractional_part_name(number)
  fractional_part = (number % 1).round(fractional_number_order(number))
  fractional_order = ((fractional_part) * (10 ** fractional_number_order(number))).to_s.split('.')[0].to_i
  feminine_natural_number_name(fractional_order, true) + " " + Declinations.name_with_declination(fractional_ten_powers_name(number), fractional_part)
end

#fractional_pre_word(number) ⇒ Object



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

def fractional_pre_word(number)
  names["fractional_pre_words"][fractional_number_order(number) % 3]
end

#fractional_ten_powers_name(number) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/kabal/languages/russian/fractional_numbers.rb', line 19

def fractional_ten_powers_name(number)
  ten_powers_name = ""
  if need_pre_word? number
    ten_powers_name = fractional_pre_word(number) + fractional_order_word(number)
  else
    ten_powers_name = names["fractional_ten_powers"][fractional_number_order(number)]
  end
end

#need_pre_word?(number) ⇒ Boolean

Returns:

  • (Boolean)


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

def need_pre_word?(number)
  fractional_number_order(number) > 3 and fractional_number_order(number) % 3 != 0
end

#whole_part_name(number) ⇒ Object



14
15
16
17
# File 'lib/kabal/languages/russian/fractional_numbers.rb', line 14

def whole_part_name(number)
  count = number.floor
  feminine_natural_number_name(count) + " " + Declinations.name_with_declination(whole, count)
end