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 +1 -6
- data/History.txt +4 -0
- data/lib/ru_propisju.rb +103 -27
- data/ru_propisju.gemspec +2 -2
- data/test/test_ru_propisju.rb +89 -9
- metadata +4 -4
data/Gemfile
CHANGED
@@ -1,12 +1,7 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
group :development do
|
4
|
-
|
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
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.
|
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.
|
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{
|
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"
|
data/test/test_ru_propisju.rb
CHANGED
@@ -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:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
|
-
-
|
8
|
+
- 4
|
9
9
|
- 0
|
10
|
-
version: 2.
|
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:
|
18
|
+
date: 2015-04-13 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|