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 +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
|