ru_propisju 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
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