to_russian_words 1.1.1 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5af8092d6536adb922bb4c15e65f96e2da717638
4
- data.tar.gz: a4535afdade520cb50907ef6d12627229b55de27
3
+ metadata.gz: 346812726e96d15239f6716e319645cf612fd2c2
4
+ data.tar.gz: 2c260974caa40d84de6bf2ad29b1e7ccb8567266
5
5
  SHA512:
6
- metadata.gz: c1a09a64c97b987f92662f8460fe3f71fff2f53bde458bef62ef2d76e361ba79b9e55ac2d2a49db35e6adbadcf8e59c6bbf260c4169a09180aeaa917d09bdbcb
7
- data.tar.gz: 8a955db2e1a0740071258a834f8691a79bbda6d9effda6398c8a81cd6b044ac7e9ee8ec4429e0c060ab5669cb733cb5d08b0a309e0ca3c8d9d213c657e813efa
6
+ metadata.gz: 318b675911dcd1312837617dd05de09a45c758e9ff613fb24d691dc90238ed2b670270527dfa9e13bb9b443cf767e79acfbcacb67abb82bff68da70a2c3a3f8a
7
+ data.tar.gz: dde4be3a41c0a2365e98eaa176bedbadca3fdc46cb16722bf02aa3276d118b56a0d3dd797fa71e14c82df0c3303420bfb63b6cbde7fafa3e0f5950a8ad9b46e6
data/README.md CHANGED
@@ -7,16 +7,18 @@ e.g.
7
7
  25.to_words('dative') # "двадцати пяти"
8
8
  70.to_words('dative') # "семидесяти"
9
9
  70.to_words() # "семьдесят"
10
+
11
+ With large numbers may be inaccurate, fix ... soon :)
10
12
 
11
13
  ## Installation
12
14
 
13
15
  Add this line to your application's Gemfile:
14
16
 
15
- gem 'to_words', git: 'git://github.com/VasiliyG/to_words.git', tag: 'v1.0.7'
17
+ gem 'to_words', '1.1.1'
16
18
 
17
19
  And then execute:
18
20
 
19
- $ bundle
21
+ $ bundle install
20
22
 
21
23
  ## Usage
22
24
 
@@ -22,7 +22,7 @@ module ToRussianWords
22
22
  while num != 0
23
23
  num, remaining = num.divmod(1000)
24
24
  temp_result = result_below_one_thousand(remaining, counter, russian_case)
25
- result << temp_result + ' ' + divisions(russian_case)[counter] + ' ' if temp_result
25
+ result << temp_result + ' ' + divisions(russian_case)[counter][remaining.to_s.last.to_i] if temp_result
26
26
  counter += 1
27
27
  end
28
28
  sign + result.reverse.join(' ').rstrip
@@ -2,23 +2,23 @@
2
2
  module ToRussianWords
3
3
  module Divisions
4
4
  NOMINATIVE_DIVISIONS = [
5
- '',
6
- 'тысяч',
7
- 'миллион',
8
- 'миллиард',
9
- 'триллион',
10
- 'квадрильон',
11
- 'нониллион'
5
+ ([''] * 10),
6
+ ['', 'тысяча', (['тысячи'] * 3), (['тысяч'] * 5)].flatten,
7
+ ['', 'миллион', (['миллиона'] * 3), (['миллионов'] * 5)].flatten,
8
+ ['', 'миллиард', (['миллиарда'] * 3), (['миллиардов'] * 5)].flatten,
9
+ ['', 'триллион', (['триллиона'] * 3), (['триллионов'] * 5)].flatten,
10
+ ['', 'квадрильон', (['квадрильона'] * 3), (['квадрильонов'] * 5)].flatten,
11
+ ['', 'нониллион', (['нониллиона'] * 3), (['нониллионов'] * 5)].flatten
12
12
  ].freeze
13
13
 
14
14
  DATIVE_DIVISIONS = [
15
- '',
16
- 'тысячи',
17
- 'миллиона',
18
- 'миллиарда',
19
- 'триллиона',
20
- 'квадрильона',
21
- 'нониллиона'
15
+ ([''] * 10),
16
+ ['', 'тысячи', (['тысяч'] * 8)].flatten,
17
+ ['', 'миллиона', (['миллионов'] * 8)].flatten,
18
+ ['', 'миллиарда', (['миллиардов'] * 8)].flatten,
19
+ ['', 'триллиона', (['триллионов'] * 8)].flatten,
20
+ ['', 'квадрильона', (['квадрильонов'] * 8)].flatten,
21
+ ['', 'нониллиона', (['нониллионов'] * 8)].flatten,
22
22
  ].freeze
23
23
  end
24
24
  end
@@ -14,11 +14,11 @@ module ToRussianWords
14
14
  end
15
15
 
16
16
  def higher_than_hundred(hundred, remaining, counter, russian_case)
17
- century = under_hundred(russian_case)[hundred]
17
+ century = (hundred == 1 ? '' : under_hundred(russian_case)[hundred])
18
18
  if remaining != 0
19
- return century + "#{hundred_name(russian_case)} " + under_hundred(russian_case)[remaining]
19
+ return century + "#{hundred_name(russian_case, remaining)} " + under_hundred(russian_case)[remaining]
20
20
  end
21
- return century + "#{hundred_name(russian_case)} " if remaining == 0
21
+ return century + "#{hundred_name(russian_case, remaining)} " if remaining == 0
22
22
  end
23
23
 
24
24
  def check_sign(num)
@@ -49,12 +49,23 @@ module ToRussianWords
49
49
  end
50
50
  end
51
51
 
52
- def hundred_name(russian_case)
52
+ def hundred_name(russian_case, remaining)
53
+ remaining = remaining.to_s.last.to_i
53
54
  case russian_case
54
55
  when 'dative'
55
- 'сот'
56
+ if remaining == 1
57
+ 'ста'
58
+ else
59
+ 'сот'
60
+ end
56
61
  else
57
- 'ста'
62
+ if remaining == 1
63
+ 'сто'
64
+ elsif remaining.between?(2, 4)
65
+ 'ста'
66
+ else
67
+ 'сот'
68
+ end
58
69
  end
59
70
  end
60
71
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ToRussianWords
3
- VERSION = "1.1.1"
3
+ VERSION = "1.1.2"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: to_russian_words
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vasiliy Gandzha