ru_propisju 2.3.0 → 2.4.0

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.
data/Gemfile CHANGED
@@ -1,12 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
- if RUBY_VERSION < "1.9"
5
- gem "jeweler", '1.8.4' # Last one without the stupid nokogiri dependency
6
- else
7
- gem "jeweler", '~> 2'
8
- end
9
-
4
+ gem "jeweler", '1.8.4' # Last one without the stupid nokogiri dependency
10
5
  gem "rake"
11
6
  gem "test-unit"
12
7
  end
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.4.0
2
+
3
+ * Добавлен творительный падеж (только для русской локали) (https://github.com/julik/ru_propisju/pull/15)
4
+
1
5
  === 2.3.0
2
6
 
3
7
  * Добавлена поддержка казахстанского тенге - nodkz
data/lib/ru_propisju.rb CHANGED
@@ -6,8 +6,8 @@ $KCODE = 'u' if RUBY_VERSION < '1.9.0'
6
6
  # RuPropisju.rublej(123) # "сто двадцать три рубля"
7
7
  module RuPropisju
8
8
 
9
- VERSION = '2.3.0'
10
-
9
+ VERSION = '2.4.0'
10
+
11
11
  # http://www.xe.com/symbols.php
12
12
  # (лица, приближенные форексам и всяким там валютам и курсам)
13
13
  # говорят, что код валюты российского рубля - rub
@@ -19,9 +19,9 @@ module RuPropisju
19
19
  "eur" => :evro,
20
20
  "kzt" => :tenge,
21
21
  }
22
-
22
+
23
23
  SUPPORTED_CURRENCIES = CURRENCIES.keys.join ','
24
-
24
+
25
25
  TRANSLATIONS = {
26
26
  'ru' => {
27
27
  0 => "",
@@ -139,6 +139,64 @@ module RuPropisju
139
139
  :usd_integral => ["долларе", "долларах", "долларах"],
140
140
  :usd_fraction => ['центе', 'центах', 'центах'],
141
141
  },
142
+ 'ru_from' => {
143
+ 0 => "",
144
+ '0' => "нулём",
145
+ :thousands => ["тысячю", "тысячами", "тысячами"],
146
+ :millions => ["миллионом", "миллионами", "миллионами"],
147
+ :billions => ["миллиардом", "миллиардами", "миллиардами"],
148
+ 100 => "ста",
149
+ 200 => "двумястами",
150
+ 300 => "тремястами",
151
+ 400 => "четырьмястами",
152
+ 500 => "пятьюстами",
153
+ 600 => "шестьюстами",
154
+ 700 => "семьюстами",
155
+ 800 => "восьмьюстами",
156
+ 900 => "девятьюстами",
157
+
158
+ 10 => "десятью",
159
+ 11 => "одиннадцатью",
160
+ 12 => "двенадцатью",
161
+ 13 => "тринадцатью",
162
+ 14 => "четырнадцатью",
163
+ 15 => "пятнадцатью",
164
+ 16 => "шестнадцатью",
165
+ 17 => "семнадцатью",
166
+ 18 => "восемнадцатью",
167
+ 19 => "девятнадцатью",
168
+ 20 => "двадцатью",
169
+ 30 => "тридцатью",
170
+ 40 => "сорока",
171
+ 50 => "пятьюдесятью",
172
+ 60 => "шестьюдесятью",
173
+ 70 => "семьюдесятью",
174
+ 80 => "восьмьюдесятью",
175
+ 90 => "девяноста",
176
+ # единицы, местами - c учетом рода
177
+ 1 => {1 => "одним", 2 => 'одной', 3 => 'одним'},
178
+ 2 => {1 => "двумя", 2 => 'двумя', 3 => 'двумя'},
179
+ 3 => "тремя",
180
+ 4 => "четырьмя",
181
+ 5 => "пятью",
182
+ 6 => "шестью",
183
+ 7 => "семью",
184
+ 8 => "восьмью",
185
+ 9 => "девятью",
186
+ :rub_integral => ["рублём", "рублями", "рублями"],
187
+ :rub_fraction => ['копейкой', 'копейками', 'копейками'],
188
+ :uah_integral => ["гривной", "гривнами", "гривнами"],
189
+ :uah_fraction => ['копейкой', 'копейками', 'копейками'],
190
+ :kzt_integral => ["тенге", "тенге", "тенге"],
191
+ :kzt_fraction => ['тиыной', 'тиынами', 'тиынами'],
192
+ :eur_integral => ["евро", "евро", "евро"],
193
+ # по опыту моей прошлой работы в банке
194
+ # центами называют дробную часть доллара
195
+ # а дробную часть евро называют евроцентом
196
+ :eur_fraction => ["центом", "центами", "центами"],
197
+ :usd_integral => ["долларом", "долларами", "долларами"],
198
+ :usd_fraction => ['центом', 'центами', 'центами'],
199
+ },
142
200
  'ua' => {
143
201
  0 => "",
144
202
  '0' => "нуль",
@@ -208,17 +266,17 @@ module RuPropisju
208
266
  # Кидается при запросе неизвестной валюты
209
267
  class UnknownCurrency < ArgumentError
210
268
  end
211
-
269
+
212
270
  # Кидается при запросе неизвестного языка
213
271
  class UnknownLocale < ArgumentError
214
272
  end
215
-
273
+
216
274
  # Выбирает нужный падеж существительного в зависимости от числа
217
275
  #
218
276
  # choose_plural(3, "штука", "штуки", "штук") #=> "штуки"
219
277
  def choose_plural(amount, *variants)
220
278
  variants = variants.flatten
221
-
279
+
222
280
  mod_ten = amount % 10
223
281
  mod_hundred = amount % 100
224
282
  variant = if (mod_ten == 1 && mod_hundred != 11)
@@ -350,7 +408,7 @@ module RuPropisju
350
408
  else
351
409
  [propisju(items, gender, locale), forms[1]]
352
410
  end
353
-
411
+
354
412
  elements.join(" ")
355
413
  end
356
414
 
@@ -395,20 +453,20 @@ module RuPropisju
395
453
  parts = [integ , integrals[-1], frac, fractions[-1]]
396
454
  parts.join(' ')
397
455
  end
398
-
456
+
399
457
  # Cоставляет число прописью для чисел до тысячи
400
-
458
+
401
459
  def compose_ordinal(remaining_amount_or_nil, gender, item_forms = [], locale = :ru)
402
-
460
+
403
461
  remaining_amount = remaining_amount_or_nil.to_i
404
-
462
+
405
463
  locale = locale.to_s
406
-
464
+
407
465
  # Ноль чего-то
408
466
  # return "ноль %s" % item_forms[3] if remaining_amount_or_nil.zero?
409
-
467
+
410
468
  rest, rest1, chosen_ordinal, ones, tens, hundreds = [nil]*6
411
-
469
+
412
470
  rest = remaining_amount % 1000
413
471
  remaining_amount = remaining_amount / 1000
414
472
  if rest.zero?
@@ -417,7 +475,7 @@ module RuPropisju
417
475
  end
418
476
 
419
477
  locale_root = pick_locale(TRANSLATIONS, locale)
420
-
478
+
421
479
  # начинаем подсчет с Rest
422
480
  # сотни
423
481
  hundreds = locale_root[(rest / 100).to_i * 100]
@@ -448,7 +506,7 @@ module RuPropisju
448
506
  ones,
449
507
  item_forms[chosen_ordinal],
450
508
  ].compact.reject(&:empty?).join(' ').strip
451
-
509
+
452
510
  return plural
453
511
  end
454
512
 
@@ -489,6 +547,24 @@ module RuPropisju
489
547
  ],
490
548
  :prefix => ["ой", 'ых'],
491
549
  },
550
+ 'ru_from' =>{
551
+ :source_words => [
552
+ 'целой',
553
+ 'десятой',
554
+ 'сотой',
555
+ 'тысячной',
556
+ 'десятитысячной',
557
+ 'стотысячной',
558
+ 'миллионной',
559
+ 'десятимиллионной',
560
+ 'стомиллионной',
561
+ 'миллиардной',
562
+ 'десятимиллиардной',
563
+ 'стомиллиардной',
564
+ 'триллионной'
565
+ ],
566
+ :prefix => ["ой", 'ыми'],
567
+ },
492
568
  'ua' => {
493
569
  :source_words => [
494
570
  'ціла',
@@ -546,28 +622,28 @@ module RuPropisju
546
622
  # Примерно так:
547
623
  # propisju(42, 1, ["сволочь", "сволочи", "сволочей"]) # => "сорок две сволочи"
548
624
  def propisju_int(amount, gender = 1, item_forms = [], locale = :ru)
549
-
625
+
550
626
  locale_root = pick_locale(TRANSLATIONS, locale)
551
-
627
+
552
628
  # zero!
553
629
  if amount.zero?
554
630
  return [locale_root['0'], item_forms[-1]].compact.join(' ')
555
631
  end
556
-
632
+
557
633
  fractions = [
558
634
  [:trillions, 1_000_000_000_000],
559
635
  [:billions, 1_000_000_000],
560
636
  [:millions, 1_000_000],
561
637
  [:thousands, 1_000],
562
638
  ]
563
-
639
+
564
640
  parts = fractions.map do | name, multiplier |
565
641
  [name, fraction = (amount / multiplier) % 1000]
566
642
  end
567
-
643
+
568
644
  # Единицы обрабатываем отдельно
569
645
  ones = amount % 1000
570
-
646
+
571
647
  # Составляем простые тысячные доли
572
648
  parts_in_writing = parts.reject do | part |
573
649
  part[1].zero?
@@ -575,18 +651,18 @@ module RuPropisju
575
651
  thousandth_gender = (name == :thousands) ? 2 : 1
576
652
  compose_ordinal(fraction, thousandth_gender, locale_root[name], locale)
577
653
  end
578
-
654
+
579
655
  # И только единицы обрабатываем с переданными параметрами
580
656
  parts_in_writing.push(compose_ordinal(ones, gender, item_forms, locale))
581
-
657
+
582
658
  parts_in_writing.compact.join(' ')
583
659
  end
584
-
660
+
585
661
  def pick_locale(from_hash, locale)
586
662
  return from_hash[locale.to_s] if from_hash.has_key?(locale.to_s)
587
663
  raise UnknownLocale, "Unknown locale #{locale.inspect}"
588
664
  end
589
-
665
+
590
666
  alias_method :rublja, :rublej
591
667
  alias_method :rubl, :rublej
592
668
 
data/ru_propisju.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ru_propisju}
8
- s.version = "2.3.0"
8
+ s.version = "2.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Julik Tarkhanov"]
12
- s.date = %q{2014-10-22}
12
+ s.date = %q{2015-04-13}
13
13
  s.email = %q{me@julik.nl}
14
14
  s.extra_rdoc_files = [
15
15
  "README.rdoc"
@@ -32,7 +32,18 @@ class TestRuPropisju < Test::Unit::TestCase
32
32
  assert_equal "ста двадцати трёх евро", RuPropisju.amount_in_words(123, "eur", "ru_in")
33
33
  assert_equal "ста двадцати трёх евро четырнадцати центах", RuPropisju.amount_in_words(123.14, "eur", :ru_in)
34
34
  assert_equal "ста двадцати трёх долларах четырнадцати центах", RuPropisju.amount_in_words(123.14, "usd", :ru_in)
35
-
35
+
36
+ # russian locale (творительный падеж)
37
+ assert_equal "ста двадцатью тремя рублями", RuPropisju.amount_in_words(123, :rur, :ru_from)
38
+ assert_equal "ста двадцатью тремя рублями", RuPropisju.amount_in_words(123, :rub, :ru_from)
39
+ assert_equal "ста двадцатью тремя рублями", RuPropisju.amount_in_words(123, "RUR", "ru_from")
40
+ assert_equal "ста двадцатью тремя рублями", RuPropisju.amount_in_words(123, "rur", "ru_from")
41
+ assert_equal "ста двадцатью тремя гривнами", RuPropisju.amount_in_words(123, "uah", "ru_from")
42
+ assert_equal "ста двадцатью тремя тенге", RuPropisju.amount_in_words(123, "kzt", "ru_from")
43
+ assert_equal "ста двадцатью тремя евро", RuPropisju.amount_in_words(123, "eur", "ru_from")
44
+ assert_equal "ста двадцатью тремя евро четырнадцатью центами", RuPropisju.amount_in_words(123.14, "eur", :ru_from)
45
+ assert_equal "ста двадцатью тремя долларами четырнадцатью центами", RuPropisju.amount_in_words(123.14, "usd", :ru_from)
46
+
36
47
  # ua locale
37
48
  assert_equal "сто двадцять три рубля", RuPropisju.amount_in_words(123, :rur, :ua)
38
49
  assert_equal "сто двадцять три рубля", RuPropisju.amount_in_words(123, :rub, :ua)
@@ -44,14 +55,14 @@ class TestRuPropisju < Test::Unit::TestCase
44
55
  assert_equal "сто двадцять три євро чотирнадцять євроцентів", RuPropisju.amount_in_words(123.14, "eur", :ua)
45
56
  assert_equal "сто двадцять три долара чотирнадцять центів", RuPropisju.amount_in_words(123.14, "usd", :ua)
46
57
  end
47
-
58
+
48
59
  def test_issue_3
49
60
  assert_equal "два миллиона евро", RuPropisju.evro(2000000)
50
61
  assert_equal "два миллиона рублей", RuPropisju.rublej(2000000)
51
62
  assert_equal "два миллиона тенге", RuPropisju.tenge(2000000)
52
63
  assert_equal "два миллиона рублей", RuPropisju.amount_in_words(2000000, :rub)
53
64
  end
54
-
65
+
55
66
  def test_propisju_dollarov
56
67
  assert_equal "сто двадцать один доллар пятьдесят один цент", RuPropisju.dollarov(121.51)
57
68
  assert_equal "сто двадцять один долар п'ятьдесят один цент", RuPropisju.dollarov(121.51, :ua)
@@ -66,11 +77,11 @@ class TestRuPropisju < Test::Unit::TestCase
66
77
  assert_equal "сто двадцать один тенге четыре тиына", RuPropisju.tenge(121.04)
67
78
  assert_equal "сто двадцять один тенге чотири тиына", RuPropisju.tenge(121.04, :ua)
68
79
  end
69
-
80
+
70
81
  def test_thousands_and_millions
71
82
  assert_equal "два миллиона сто тысяч рублей", RuPropisju.amount_in_words(2100000, :rur)
72
83
  end
73
-
84
+
74
85
  def test_propisju_for_ints
75
86
  assert_equal "пятьсот двадцать три", RuPropisju.propisju(523, 1)
76
87
  assert_equal "шесть тысяч семьсот двадцать семь", RuPropisju.propisju(6727, 1)
@@ -98,6 +109,19 @@ class TestRuPropisju < Test::Unit::TestCase
98
109
  assert_equal "шестистах двенадцати", RuPropisju.propisju(612, 1, :ru_in)
99
110
  assert_equal "нуле", RuPropisju.propisju(0, 1, :ru_in)
100
111
 
112
+ # творительный падеж для русской локали
113
+ assert_equal "пятьюстами двадцатью тремя", RuPropisju.propisju(523, 1, :ru_from)
114
+ assert_equal "шестью тысячами семьюстами двадцатью семью", RuPropisju.propisju(6727, 1, :ru_from)
115
+ assert_equal "одним миллионом одним", RuPropisju.propisju(1_000_001, 1, :ru_from)
116
+ assert_equal "одним миллионом", RuPropisju.propisju(1_000_000, 1, :ru_from)
117
+ assert_equal "восьмью миллионами шестьюстами пятьюдесятью двумя", RuPropisju.propisju(8000652, 1, :ru_from)
118
+ assert_equal "восьмью миллионами шестьюстами пятьюдесятью двумя", RuPropisju.propisju(8000652, 2, :ru_from)
119
+ assert_equal "восьмью миллионами шестьюстами пятьюдесятью двумя", RuPropisju.propisju(8000652, 3, :ru_from)
120
+ assert_equal "сорока пятью", RuPropisju.propisju(45, 1, :ru_from)
121
+ assert_equal "пятью", RuPropisju.propisju(5, 1, :ru_from)
122
+ assert_equal "шестьюстами двенадцатью", RuPropisju.propisju(612, 1, :ru_from)
123
+ assert_equal "нулём", RuPropisju.propisju(0, 1, :ru_from)
124
+
101
125
 
102
126
  # ukrainian locale
103
127
  assert_equal "п'ятьсот двадцять три", RuPropisju.propisju(523, 1, :ua)
@@ -129,6 +153,13 @@ class TestRuPropisju < Test::Unit::TestCase
129
153
  assert_equal "двухстах двенадцати сволочах", RuPropisju.propisju_shtuk(212.00, 2, ["сволочи", "сволочах", "сволочах"], :ru_in)
130
154
  assert_equal "двухстах двенадцати целых четырёх десятых кусках", RuPropisju.propisju_shtuk(212.40, 2, ["куске", "кусках", "кусках"], :ru_in)
131
155
 
156
+ # творительный падеж русской локали
157
+ assert_equal "шестью целыми", RuPropisju.propisju_shtuk(6, 2, ["целой", "целыми", "целыми"], :ru_from)
158
+ assert_equal "двадцатью пятью колесами", RuPropisju.propisju_shtuk(25, 3, ["колесом", "колесами", "колесами"], :ru_from)
159
+ assert_equal "двадцатью одной подставой", RuPropisju.propisju_shtuk(21, 2, ["подставой", "подставами", "подставами"], :ru_from)
160
+ assert_equal "двумястами двенадцатью сволочами", RuPropisju.propisju_shtuk(212.00, 2, ["сволочью", "сволочами", "сволочами"], :ru_from)
161
+ assert_equal "двумястами двенадцатью целыми четырьмя десятыми кусками", RuPropisju.propisju_shtuk(212.40, 2, ["куском", "кусками", "кусками"], :ru_from)
162
+
132
163
  # ua locale
133
164
  assert_equal "шість цілих", RuPropisju.propisju_shtuk(6, 2, ["ціла", "цілих", "цілих"], :ua)
134
165
  assert_equal "двадцять п'ять колес", RuPropisju.propisju_shtuk(25, 3, ["колесо", "колеса", "колес"], :ua)
@@ -159,6 +190,17 @@ class TestRuPropisju < Test::Unit::TestCase
159
190
  assert_equal "двухстах трёх целых сорока одной сотой", RuPropisju.propisju(203.41, 1, :ru_in)
160
191
  assert_equal "четырёхстах сорока двух целых пяти десятых", RuPropisju.propisju(442.50000, 1, :ru_in)
161
192
 
193
+ # творительный падеж русской локали
194
+ assert_equal "шестью целыми пятью десятыми", RuPropisju.propisju(6.50, 1, :ru_from)
195
+ assert_equal "шестью", RuPropisju.propisju(6.0, 1, :ru_from)
196
+ assert_equal "тридцатью миллиардами целыми ста одиннадцатью тысячными", RuPropisju.propisju(3 * 10**10 + 0.111, 1, :ru_from)
197
+ assert_equal "тридцатью", RuPropisju.propisju(30.0, 1, :ru_from)
198
+ assert_equal "тридцатью целыми одной десятой", RuPropisju.propisju(30.1, 1, :ru_from)
199
+ assert_equal "тремястами сорока одной целой девятью десятыми", RuPropisju.propisju(341.9, 1, :ru_from)
200
+ assert_equal "тремястами сорока одной целой двумястами сорока пятью тысячными", RuPropisju.propisju(341.245, 1, :ru_from)
201
+ assert_equal "двумястами тремя целыми сорока одной сотой", RuPropisju.propisju(203.41, 1, :ru_from)
202
+ assert_equal "четырьмястами сорока двумя целыми пятью десятыми", RuPropisju.propisju(442.50000, 1, :ru_from)
203
+
162
204
  # ua locale
163
205
  assert_equal "шість цілих п'ять десятих", RuPropisju.propisju(6.50, 1, :ua)
164
206
  assert_equal "триста сорок одна ціла дев'ять десятих", RuPropisju.propisju(341.9, 1, :ua)
@@ -171,17 +213,17 @@ class TestRuPropisju < Test::Unit::TestCase
171
213
  assert_equal "чотириста сорок дві цілих п'ять десятих", RuPropisju.propisju(442.50000, 1, :kg)
172
214
  end
173
215
  end
174
-
175
-
216
+
217
+
176
218
  def test_choose_plural
177
219
  assert_equal "чемодана", RuPropisju.choose_plural(523, ["чемодан", "чемодана", "чемоданов"])
178
220
  assert_equal "партий", RuPropisju.choose_plural(6727, ["партия", "партии", "партий"])
179
221
  assert_equal "козлов", RuPropisju.choose_plural(45, ["козел", "козла", "козлов"])
180
222
  assert_equal "колес", RuPropisju.choose_plural(260, ["колесо", "колеса", "колес"])
181
-
223
+
182
224
  # splat args
183
225
  assert_equal "колес", RuPropisju.choose_plural(260, "колесо", "колеса", "колес")
184
-
226
+
185
227
  # ua locale
186
228
  assert_equal "валізи", RuPropisju.choose_plural(523, ["валіза", "валізи", "валіз"])
187
229
  assert_equal "партій", RuPropisju.choose_plural(6727, ["партія", "партії", "партій"])
@@ -207,6 +249,15 @@ class TestRuPropisju < Test::Unit::TestCase
207
249
  assert_equal "одном рубле", RuPropisju.rubl(1, :ru_in)
208
250
  assert_equal "трёх рублях 14 копейках", RuPropisju.rublja(3.14, :ru_in)
209
251
 
252
+ # ru locale творительный падеж
253
+ assert_equal "нулём рублями 0 копейками", RuPropisju.rublej(0, :ru_from)
254
+ assert_equal "ста двадцатью тремя рублями", RuPropisju.rublej(123, :ru_from)
255
+ assert_equal "тремястами сорока тремя рублями 20 копейками", RuPropisju.rublej(343.20, :ru_from)
256
+ assert_equal "42 копейками", RuPropisju.rublej(0.4187, :ru_from)
257
+ assert_equal "тремястами тридцатью двумя рублями", RuPropisju.rublej(331.995, :ru_from)
258
+ assert_equal "одним рублём", RuPropisju.rubl(1, :ru_from)
259
+ assert_equal "тремя рублями 14 копейками", RuPropisju.rublja(3.14, :ru_from)
260
+
210
261
  # ua locale
211
262
  assert_equal "сто двадцять три рубля", RuPropisju.rublej(123, :ua)
212
263
  assert_equal "триста сорок три рубля 20 копійок", RuPropisju.rublej(343.20, :ua)
@@ -236,6 +287,16 @@ class TestRuPropisju < Test::Unit::TestCase
236
287
  assert_equal "трёх гривнах четырнадцати копейках", RuPropisju.grivny(3.14, :ru_in)
237
288
  assert_equal "нуле гривнах нуле копейках", RuPropisju.griven(0, :ru_in)
238
289
 
290
+ # ru locale творительный падеж
291
+ assert_equal "ста двадцатью тремя гривнами", RuPropisju.griven(123, :ru_from)
292
+ assert_equal "ста двадцатью четырьмя гривнами", RuPropisju.griven(124, :ru_from)
293
+ assert_equal "тремястами сорока тремя гривнами двадцатью копейками", RuPropisju.griven(343.20, :ru_from)
294
+ assert_equal "сорока двумя копейками", RuPropisju.griven(0.4187, :ru_from)
295
+ assert_equal "тремястами тридцатью двумя гривнами", RuPropisju.griven(331.995, :ru_from)
296
+ assert_equal "одной гривной", RuPropisju.grivna(1, :ru_from)
297
+ assert_equal "тремя гривнами четырнадцатью копейками", RuPropisju.grivny(3.14, :ru_from)
298
+ assert_equal "нулём гривнами нулём копейками", RuPropisju.griven(0, :ru_from)
299
+
239
300
  # ua locale
240
301
  assert_equal "сто двадцять три гривні", RuPropisju.griven(123, :ua)
241
302
  assert_equal "сто двадцять чотири гривні", RuPropisju.griven(124, :ua)
@@ -269,6 +330,17 @@ class TestRuPropisju < Test::Unit::TestCase
269
330
  assert_equal "трёх тенге четырнадцати тиынах", RuPropisju.tenge(3.14, :ru_in)
270
331
  assert_equal "нуле тенге нуле тиынах", RuPropisju.tenge(0, :ru_in)
271
332
 
333
+ # ru locale творительный падеж
334
+ assert_equal "ста двадцатью тремя тенге", RuPropisju.tenge(123, :ru_from)
335
+ assert_equal "ста двадцатью четырьмя тенге", RuPropisju.tenge(124, :ru_from)
336
+ assert_equal "тремястами сорока тремя тенге двадцатью тиынами", RuPropisju.tenge(343.20, :ru_from)
337
+ assert_equal "сорока двумя тиынами", RuPropisju.tenge(0.4187, :ru_from)
338
+ assert_equal "тремястами тридцатью двумя тенге", RuPropisju.tenge(331.995, :ru_from)
339
+ assert_equal "тремястами тридцатью одним тенге девяноста девятью тиынами", RuPropisju.tenge(331.985, :ru_from)
340
+ assert_equal "одним тенге", RuPropisju.tenge(1, :ru_from)
341
+ assert_equal "тремя тенге четырнадцатью тиынами", RuPropisju.tenge(3.14, :ru_from)
342
+ assert_equal "нулём тенге нулём тиынами", RuPropisju.tenge(0, :ru_from)
343
+
272
344
  # ua locale
273
345
  assert_equal "сто двадцять три тенге", RuPropisju.tenge(123, :ua)
274
346
  assert_equal "триста сорок три тенге двадцять тиынов", RuPropisju.tenge(343.20, :ua)
@@ -294,6 +366,14 @@ class TestRuPropisju < Test::Unit::TestCase
294
366
  assert_equal "21 копейке", RuPropisju.kopeika(21, :ru_in)
295
367
  assert_equal "3 копейках", RuPropisju.kopeiki(3, :ru_in)
296
368
 
369
+ # ru locale творительный падеж
370
+ assert_equal "нулём рублями 0 копейками", RuPropisju.kopeek(0, :ru_from)
371
+ assert_equal "ста двадцатью тремя рублями", RuPropisju.kopeek(12300, :ru_from)
372
+ assert_equal "тремя рублями 14 копейками", RuPropisju.kopeek(314, :ru_from)
373
+ assert_equal "32 копейками", RuPropisju.kopeek(32, :ru_from)
374
+ assert_equal "21 копейкой", RuPropisju.kopeika(21, :ru_from)
375
+ assert_equal "3 копейками", RuPropisju.kopeiki(3, :ru_from)
376
+
297
377
  # ua locale
298
378
  assert_equal "сто двадцять три рубля", RuPropisju.kopeek(12300, :ua)
299
379
  assert_equal "три рубля 14 копійок", RuPropisju.kopeek(314, :ua)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ru_propisju
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
- - 3
8
+ - 4
9
9
  - 0
10
- version: 2.3.0
10
+ version: 2.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Julik Tarkhanov
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2014-10-22 00:00:00 +02:00
18
+ date: 2015-04-13 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency