ru_propisju 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/README.rdoc +1 -0
- data/lib/ru_propisju.rb +176 -49
- data/ru_propisju.gemspec +7 -7
- data/test/test_ru_propisju.rb +134 -3
- metadata +62 -76
data/History.txt
CHANGED
data/README.rdoc
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
|
15
15
|
RuPropisju.rublej(123.78) #=> "сто двадцать три рубля 78 копеек"
|
16
16
|
RuPropisju.propisju_shtuk(212.40, 2, ["сволочь", "сволочи", "сволочей"]) #=> "двести двенадцать целых четыре десятых сволочи"
|
17
|
+
RuPropisju.rublej_extended_format(1000, :ru, fraction_formatter: '%02d', integrals_formatter: '+ %d', integrals_delimiter: ' ', always_show_fraction: true) #=> "+ 1 000 рублей 00 копеек (одна тысяча рублей 00 копеек)"
|
17
18
|
|
18
19
|
'Продается в ' + RuPropisju.propisju_shtuk(147, 1, ["городе", "городах", "городах"], :ru_in) #=> "Продается в ста сорока семи городах"
|
19
20
|
|
data/lib/ru_propisju.rb
CHANGED
@@ -6,7 +6,7 @@ $KCODE = 'u' if RUBY_VERSION < '1.9.0'
|
|
6
6
|
# RuPropisju.rublej(123) # "сто двадцать три рубля"
|
7
7
|
module RuPropisju
|
8
8
|
|
9
|
-
VERSION = '2.
|
9
|
+
VERSION = '2.5.0'
|
10
10
|
|
11
11
|
# http://www.xe.com/symbols.php
|
12
12
|
# (лица, приближенные форексам и всяким там валютам и курсам)
|
@@ -81,7 +81,7 @@ module RuPropisju
|
|
81
81
|
:usd_integral => ["доллар", "доллара", "долларов"],
|
82
82
|
:usd_fraction => ['цент', 'цента', 'центов'],
|
83
83
|
},
|
84
|
-
'ru_in' => { # Предложный падеж, например в 2
|
84
|
+
'ru_in' => { # Предложный падеж, например в 2 городах
|
85
85
|
0 => "",
|
86
86
|
'0' => "нуле",
|
87
87
|
:thousands => ["тысяче", "тысячах", "тысячах"],
|
@@ -110,14 +110,14 @@ module RuPropisju
|
|
110
110
|
20 => "двадцати",
|
111
111
|
30 => "тридцати",
|
112
112
|
40 => "сорока",
|
113
|
-
50 => "
|
114
|
-
60 => "
|
115
|
-
70 => "
|
116
|
-
80 => "
|
113
|
+
50 => "пятидесяти",
|
114
|
+
60 => "шестидесяти",
|
115
|
+
70 => "семидесяти",
|
116
|
+
80 => "восьмидесяти",
|
117
117
|
90 => "девяноста",
|
118
118
|
# единицы, местами - c учетом рода
|
119
|
-
1 => {1 =>
|
120
|
-
2 => {1 =>
|
119
|
+
1 => { 1 => 'одном', 2 => 'одной', 3 => 'одном' },
|
120
|
+
2 => { 1 => 'двух', 2 => 'двух', 3 => 'двух' },
|
121
121
|
3 => "трёх",
|
122
122
|
4 => "четырёх",
|
123
123
|
5 => "пяти",
|
@@ -125,19 +125,75 @@ module RuPropisju
|
|
125
125
|
7 => "семи",
|
126
126
|
8 => "восьми",
|
127
127
|
9 => "девяти",
|
128
|
-
:rub_integral => [
|
129
|
-
:rub_fraction => [
|
130
|
-
:uah_integral => [
|
131
|
-
:uah_fraction => [
|
132
|
-
:kzt_integral => [
|
133
|
-
:kzt_fraction => [
|
134
|
-
:eur_integral => [
|
128
|
+
:rub_integral => %w[рубле рублях рублях],
|
129
|
+
:rub_fraction => %w[копейке копейках копейках],
|
130
|
+
:uah_integral => %w[гривне гривнах гривнах],
|
131
|
+
:uah_fraction => %w[копейке копейках копейках],
|
132
|
+
:kzt_integral => %w[тенге тенге тенге],
|
133
|
+
:kzt_fraction => %w[тиыне тиынах тиынах],
|
134
|
+
:eur_integral => %w[евро евро евро],
|
135
135
|
# по опыту моей прошлой работы в банке
|
136
136
|
# центами называют дробную часть доллара
|
137
137
|
# а дробную часть евро называют евроцентом
|
138
|
-
:eur_fraction => [
|
139
|
-
:usd_integral => [
|
140
|
-
:usd_fraction => [
|
138
|
+
:eur_fraction => %w[центе центах центах],
|
139
|
+
:usd_integral => %w[долларе долларах долларах],
|
140
|
+
:usd_fraction => %w[центе центах центах],
|
141
|
+
},
|
142
|
+
'ru_gen' => { # Родительный падеж, например в течение одного рабочего дня, пяти ночей (нуля рабочих дней)
|
143
|
+
0 => '',
|
144
|
+
'0' => 'нуля',
|
145
|
+
:thousands => %w[тысячи тысяч тысяч],
|
146
|
+
:millions => %w[миллиона миллионов миллионов],
|
147
|
+
:billions => %w[миллиарда миллиардов миллиардов],
|
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 => %w[рубля рублей рублей],
|
187
|
+
:rub_fraction => %w[копейки копеек копеек],
|
188
|
+
:uah_integral => %w[гривны гривен гривен],
|
189
|
+
:uah_fraction => %w[копейки копеек копеек],
|
190
|
+
:kzt_integral => %w[тенге тенге тенге],
|
191
|
+
:kzt_fraction => %w[тиына тиынов тиынов],
|
192
|
+
:eur_integral => %w[евро евро евро],
|
193
|
+
# TODO: решить как же всё-таки звать дробную часть евро: "цент" или "евроцент"
|
194
|
+
:eur_fraction => %w[цента центов центов],
|
195
|
+
:usd_integral => %w[доллара долларов долларов],
|
196
|
+
:usd_fraction => %w[цента центов центов],
|
141
197
|
},
|
142
198
|
'ru_from' => {
|
143
199
|
0 => "",
|
@@ -253,6 +309,9 @@ module RuPropisju
|
|
253
309
|
:usd_fraction => ['цент', 'цента', 'центів'],
|
254
310
|
}
|
255
311
|
}
|
312
|
+
# Переименовал предложный падеж из _in в _pre (prepositional)
|
313
|
+
# Оставил 'ru_in' для обратной совместимости
|
314
|
+
TRANSLATIONS['ru_pre'] = TRANSLATIONS['ru_in']
|
256
315
|
|
257
316
|
MONEY_GENDERS = {
|
258
317
|
:rub => 1,
|
@@ -295,45 +354,61 @@ module RuPropisju
|
|
295
354
|
# Поддерживаемые валюты: rur, usd, uah, eur
|
296
355
|
#
|
297
356
|
# amount_in_words(345.2, 'rur') #=> "триста сорок пять рублей 20 копеек"
|
298
|
-
|
357
|
+
#
|
358
|
+
# ==== Опции
|
359
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
360
|
+
# * +:fraction_formatter+ - строка. формат отображения числа после точки, например '%d'
|
361
|
+
def amount_in_words(amount, currency, locale = :ru, options = {})
|
299
362
|
currency = currency.to_s.downcase
|
300
363
|
unless CURRENCIES.has_key? currency
|
301
364
|
raise UnknownCurrency, "Unsupported currency #{currency}, the following are supported: #{SUPPORTED_CURRENCIES}"
|
302
365
|
end
|
303
|
-
method(CURRENCIES[currency]).call(amount, locale)
|
366
|
+
method(CURRENCIES[currency]).call(amount, locale, options)
|
304
367
|
end
|
305
368
|
|
306
369
|
# Выводит целое или дробное число как сумму в рублях прописью
|
307
370
|
#
|
308
371
|
# rublej(345.2) #=> "триста сорок пять рублей 20 копеек"
|
309
372
|
#
|
310
|
-
|
373
|
+
# ==== Опции
|
374
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
375
|
+
# * +:fraction_formatter+ - строка. формат отображения числа после точки, например '%d'
|
376
|
+
def rublej(amount, locale = :ru, options = {})
|
311
377
|
integrals_key = :rub_integral
|
312
378
|
fractions_key = :rub_fraction
|
313
379
|
money_gender = MONEY_GENDERS[:rub]
|
314
380
|
|
315
|
-
money(amount, locale, integrals_key, fractions_key, money_gender, true)
|
381
|
+
money(amount, locale, integrals_key, fractions_key, money_gender, true, false, options)
|
316
382
|
end
|
317
383
|
|
318
384
|
# Выводит целое или дробное число как сумму в расширенном формате
|
319
385
|
#
|
320
386
|
# rublej_extended_format(345.2) #=> "345 рублей 20 копеек (триста сорок пять рублей 20 копеек)"
|
321
387
|
#
|
322
|
-
|
323
|
-
|
388
|
+
# ==== Опции
|
389
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
390
|
+
# * +:fraction_formatter+ - строка. формат отображения числа после точки, например '%d'
|
391
|
+
# * +:integrals_formatter+ - строка. формат отображения целого числа, например '%d'
|
392
|
+
# * +:integrals_delimiter+ - строка. разделитель разрядов для целой части числа, например ' '
|
393
|
+
def rublej_extended_format(amount, locale = :ru, options = {})
|
394
|
+
"#{digit_rublej(amount, locale, options)} (#{rublej(amount, locale, options)})"
|
324
395
|
end
|
325
396
|
|
326
397
|
# Выводит целое или дробное число как сумму в рублях и копейках не прописью
|
327
398
|
#
|
328
399
|
# digit_rublej(345.2) #=> "345 рублей 20 копеек"
|
329
400
|
#
|
330
|
-
|
331
|
-
|
401
|
+
# ==== Опции
|
402
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
403
|
+
# * +:fraction_formatter+ - строка. формат отображения числа после точки, например '%d'
|
404
|
+
# * +:integrals_formatter+ - строка. формат отображения целого числа, например '%d'
|
405
|
+
# * +:integrals_delimiter+ - строка. разделитель разрядов для целой части числа, например ' '
|
406
|
+
def digit_rublej(amount, locale = :ru, options = {})
|
332
407
|
integrals_key = :rub_integral
|
333
408
|
fractions_key = :rub_fraction
|
334
409
|
money_gender = MONEY_GENDERS[:rub]
|
335
410
|
|
336
|
-
money(amount, locale, integrals_key, fractions_key, money_gender, true, true)
|
411
|
+
money(amount, locale, integrals_key, fractions_key, money_gender, true, true, options)
|
337
412
|
end
|
338
413
|
# Выбирает корректный вариант числительного в зависимости от рода и числа и оформляет сумму прописью
|
339
414
|
#
|
@@ -350,52 +425,68 @@ module RuPropisju
|
|
350
425
|
# Выводит целое или дробное число как сумму в гривнах прописью
|
351
426
|
#
|
352
427
|
# griven(32) #=> "тридцать две гривны"
|
353
|
-
|
428
|
+
#
|
429
|
+
# ==== Опции
|
430
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
431
|
+
def griven(amount, locale = :ru, options = {})
|
354
432
|
integrals_key = :uah_integral
|
355
433
|
fractions_key = :uah_fraction
|
356
434
|
money_gender = MONEY_GENDERS[:uah]
|
357
435
|
|
358
|
-
money(amount, locale, integrals_key, fractions_key, money_gender)
|
436
|
+
money(amount, locale, integrals_key, fractions_key, money_gender, false, false, options)
|
359
437
|
end
|
360
438
|
|
361
439
|
# Выводит целое или дробное число как сумму в долларах прописью
|
362
440
|
#
|
363
441
|
# dollarov(32) #=> "тридцать два доллара"
|
364
|
-
|
442
|
+
#
|
443
|
+
# ==== Опции
|
444
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
445
|
+
def dollarov(amount, locale = :ru, options = {})
|
365
446
|
integrals_key = :usd_integral
|
366
447
|
fractions_key = :usd_fraction
|
367
448
|
money_gender = MONEY_GENDERS[:usd]
|
368
449
|
|
369
|
-
money(amount, locale, integrals_key, fractions_key, money_gender)
|
450
|
+
money(amount, locale, integrals_key, fractions_key, money_gender, false, false, options)
|
370
451
|
end
|
371
452
|
|
372
453
|
# Выводит целое или дробное число как сумму в евро прописью
|
373
454
|
#
|
374
455
|
# evro(32) #=> "тридцать два евро"
|
375
|
-
|
456
|
+
#
|
457
|
+
# ==== Опции
|
458
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
459
|
+
def evro(amount, locale = :ru, options = {})
|
376
460
|
integrals_key = :eur_integral
|
377
461
|
fractions_key = :eur_fraction
|
378
462
|
money_gender = MONEY_GENDERS[:eur]
|
379
463
|
|
380
|
-
money(amount, locale, integrals_key, fractions_key, money_gender)
|
464
|
+
money(amount, locale, integrals_key, fractions_key, money_gender, false, false, options)
|
381
465
|
end
|
382
466
|
|
383
467
|
# Выводит целое или дробное число как сумму в тенге прописью
|
384
468
|
#
|
385
469
|
# tenge(32) #=> "тридцать два тенге"
|
386
|
-
|
470
|
+
#
|
471
|
+
# ==== Опции
|
472
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
473
|
+
def tenge(amount, locale = :ru, options = {})
|
387
474
|
integrals_key = :kzt_integral
|
388
475
|
fractions_key = :kzt_fraction
|
389
476
|
money_gender = MONEY_GENDERS[:kzt]
|
390
477
|
|
391
|
-
money(amount, locale, integrals_key, fractions_key, money_gender)
|
478
|
+
money(amount, locale, integrals_key, fractions_key, money_gender, false, false, options)
|
392
479
|
end
|
393
480
|
|
394
481
|
# Выводит сумму прописью в рублях по количеству копеек
|
395
482
|
#
|
396
483
|
# kopeek(343) #=> "три рубля 43 копейки"
|
397
|
-
|
398
|
-
|
484
|
+
#
|
485
|
+
# ==== Опции
|
486
|
+
# * +:always_show_fraction+ - true/false. позволяет принудительно отображать 0 в качестве дробной части для целого числа
|
487
|
+
# * +:fraction_formatter+ - строка. формат отображения числа после точки, например '%d'
|
488
|
+
def kopeek(amount, locale = :ru, options = {})
|
489
|
+
rublej(amount / 100.0, locale, options)
|
399
490
|
end
|
400
491
|
|
401
492
|
# Выводит сумму данного существительного прописью и выбирает правильное число и падеж
|
@@ -412,34 +503,46 @@ module RuPropisju
|
|
412
503
|
elements.join(" ")
|
413
504
|
end
|
414
505
|
|
415
|
-
def money(amount, locale, integrals_key, fractions_key, money_gender, fraction_as_number = false, integrals_as_number = false)
|
506
|
+
def money(amount, locale, integrals_key, fractions_key, money_gender, fraction_as_number = false, integrals_as_number = false, options = {})
|
507
|
+
|
508
|
+
options[:integrals_formatter] ||= '%d'
|
509
|
+
options[:fraction_formatter] ||= '%d'
|
510
|
+
options[:integrals_delimiter] ||= ''
|
511
|
+
options[:always_show_fraction] ||= false
|
512
|
+
|
416
513
|
locale_data = pick_locale(TRANSLATIONS, locale)
|
417
514
|
integrals = locale_data[integrals_key]
|
418
515
|
fractions = locale_data[fractions_key]
|
419
516
|
|
420
|
-
return zero(locale_data, integrals, fractions, fraction_as_number, integrals_as_number) if amount.zero?
|
517
|
+
return zero(locale_data, integrals, fractions, fraction_as_number, integrals_as_number, options) if amount.zero?
|
421
518
|
|
422
519
|
parts = []
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
520
|
+
|
521
|
+
unless amount.to_i == 0
|
522
|
+
if integrals_as_number
|
523
|
+
parts << format_integral(amount.to_i, options) << choose_plural(amount.to_i, integrals)
|
524
|
+
else
|
525
|
+
parts << propisju_int(amount.to_i, money_gender, integrals, locale)
|
526
|
+
end
|
427
527
|
end
|
428
528
|
|
429
529
|
if amount.kind_of?(Float)
|
430
530
|
remainder = (amount.divmod(1)[1]*100).round
|
431
531
|
if remainder == 100
|
432
532
|
parts = [propisju_int(amount.to_i + 1, money_gender, integrals, locale)]
|
533
|
+
parts << zero_fraction(locale, money_gender, fractions, fraction_as_number, options) if options[:always_show_fraction]
|
433
534
|
else
|
434
535
|
if fraction_as_number
|
435
536
|
kop = remainder.to_i
|
436
|
-
|
437
|
-
parts << kop << choose_plural(kop, fractions)
|
537
|
+
if (!kop.zero? || options[:always_show_fraction])
|
538
|
+
parts << format(options[:fraction_formatter], kop) << choose_plural(kop, fractions)
|
438
539
|
end
|
439
540
|
else
|
440
541
|
parts << propisju_int(remainder.to_i, money_gender, fractions, locale)
|
441
542
|
end
|
442
543
|
end
|
544
|
+
else
|
545
|
+
parts << zero_fraction(locale, money_gender, fractions, fraction_as_number, options) if options[:always_show_fraction]
|
443
546
|
end
|
444
547
|
|
445
548
|
parts.join(' ')
|
@@ -447,13 +550,21 @@ module RuPropisju
|
|
447
550
|
|
448
551
|
private
|
449
552
|
|
450
|
-
def zero(locale_data, integrals, fractions, fraction_as_number, integrals_as_number)
|
451
|
-
integ = integrals_as_number ?
|
452
|
-
frac = fraction_as_number ?
|
553
|
+
def zero(locale_data, integrals, fractions, fraction_as_number, integrals_as_number, options)
|
554
|
+
integ = integrals_as_number ? format(options[:integrals_formatter], 0) : locale_data['0']
|
555
|
+
frac = fraction_as_number ? format(options[:fraction_formatter], 0) : locale_data['0']
|
453
556
|
parts = [integ , integrals[-1], frac, fractions[-1]]
|
454
557
|
parts.join(' ')
|
455
558
|
end
|
456
559
|
|
560
|
+
def zero_fraction(locale, money_gender, fractions, fraction_as_number, options)
|
561
|
+
if fraction_as_number
|
562
|
+
[format(options[:fraction_formatter], 0), choose_plural(0, fractions)]
|
563
|
+
else
|
564
|
+
propisju_int(0, money_gender, fractions, locale)
|
565
|
+
end
|
566
|
+
end
|
567
|
+
|
457
568
|
# Cоставляет число прописью для чисел до тысячи
|
458
569
|
|
459
570
|
def compose_ordinal(remaining_amount_or_nil, gender, item_forms = [], locale = :ru)
|
@@ -584,6 +695,9 @@ module RuPropisju
|
|
584
695
|
:prefix => ["а", 'их'],
|
585
696
|
},
|
586
697
|
}
|
698
|
+
# Добавляем новый префикс для предложного падежа и новые значения для родительного (совпадающие с предложным)
|
699
|
+
DECIMALS['ru_pre'] = DECIMALS['ru_in']
|
700
|
+
DECIMALS['ru_gen'] = DECIMALS['ru_in']
|
587
701
|
|
588
702
|
# Выдает сумму прописью с учетом дробной доли. Дробная доля округляется до миллионной, или (если
|
589
703
|
# дробная доля оканчивается на нули) до ближайшей доли или точки ( 500 тысячных округляется до 5 десятых, 30.0000 до 30).
|
@@ -658,6 +772,19 @@ module RuPropisju
|
|
658
772
|
parts_in_writing.compact.join(' ')
|
659
773
|
end
|
660
774
|
|
775
|
+
def format_integral(number, options)
|
776
|
+
formatted_number = format(options[:integrals_formatter], number)
|
777
|
+
delimited_number(formatted_number, options[:integrals_delimiter])
|
778
|
+
end
|
779
|
+
|
780
|
+
def delimited_number(number, delimiter)
|
781
|
+
return number.to_s if delimiter == ''
|
782
|
+
|
783
|
+
number.to_s.gsub!(/(\d)(?=(\d\d\d)+(?!\d))/) do |digit_to_delimit|
|
784
|
+
"#{digit_to_delimit}#{delimiter}"
|
785
|
+
end || number.to_s
|
786
|
+
end
|
787
|
+
|
661
788
|
def pick_locale(from_hash, locale)
|
662
789
|
return from_hash[locale.to_s] if from_hash.has_key?(locale.to_s)
|
663
790
|
raise UnknownLocale, "Unknown locale #{locale.inspect}"
|
@@ -677,5 +804,5 @@ module RuPropisju
|
|
677
804
|
|
678
805
|
public_instance_methods(true).map{|m| module_function(m) }
|
679
806
|
|
680
|
-
module_function :zero, :propisju_int, :propisju_float, :compose_ordinal, :pick_locale
|
807
|
+
module_function :zero, :zero_fraction, :propisju_int, :propisju_float, :compose_ordinal, :pick_locale, :format_integral, :delimited_number
|
681
808
|
end
|
data/ru_propisju.gemspec
CHANGED
@@ -4,13 +4,13 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "2.
|
7
|
+
s.name = "ru_propisju"
|
8
|
+
s.version = "2.5.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 =
|
13
|
-
s.email =
|
12
|
+
s.date = "2015-09-03"
|
13
|
+
s.email = "me@julik.nl"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.rdoc"
|
16
16
|
]
|
@@ -23,11 +23,11 @@ Gem::Specification.new do |s|
|
|
23
23
|
"ru_propisju.gemspec",
|
24
24
|
"test/test_ru_propisju.rb"
|
25
25
|
]
|
26
|
-
s.homepage =
|
26
|
+
s.homepage = "http://github.com/julik/ru_propisju"
|
27
27
|
s.licenses = ["MIT"]
|
28
28
|
s.require_paths = ["lib"]
|
29
|
-
s.rubygems_version =
|
30
|
-
s.summary =
|
29
|
+
s.rubygems_version = "1.8.23.2"
|
30
|
+
s.summary = "C\u{443}\u{43c}\u{43c}\u{430} \u{43f}\u{440}\u{43e}\u{43f}\u{438}\u{441}\u{44c}\u{44e}"
|
31
31
|
|
32
32
|
if s.respond_to? :specification_version then
|
33
33
|
s.specification_version = 3
|
data/test/test_ru_propisju.rb
CHANGED
@@ -33,6 +33,22 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
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
|
+
assert_equal 'ста двадцати трёх рублях', RuPropisju.amount_in_words(123, :rur, :ru_pre)
|
37
|
+
assert_equal 'ста двадцати трёх евро', RuPropisju.amount_in_words(123, :eur, :ru_pre)
|
38
|
+
|
39
|
+
# russian locale (родительный падеж)
|
40
|
+
assert_equal 'одного рубля', RuPropisju.amount_in_words(1, :rur, :ru_gen)
|
41
|
+
assert_equal 'пятидесяти одного рубля', RuPropisju.amount_in_words(51, :rur, :ru_gen)
|
42
|
+
assert_equal 'ста двадцати трёх рублей', RuPropisju.amount_in_words(123, :rur, :ru_gen)
|
43
|
+
assert_equal 'ста двадцати трёх рублей', RuPropisju.amount_in_words(123, :rub, :ru_gen)
|
44
|
+
assert_equal 'ста двадцати трёх рублей', RuPropisju.amount_in_words(123, 'RUR', 'ru_gen')
|
45
|
+
assert_equal 'ста двадцати трёх рублей', RuPropisju.amount_in_words(123, 'rur', 'ru_gen')
|
46
|
+
assert_equal 'ста двадцати трёх гривен', RuPropisju.amount_in_words(123, 'uah', 'ru_gen')
|
47
|
+
assert_equal 'ста двадцати трёх тенге', RuPropisju.amount_in_words(123, 'kzt', 'ru_gen')
|
48
|
+
assert_equal 'ста двадцати трёх евро', RuPropisju.amount_in_words(123, 'eur', 'ru_gen')
|
49
|
+
assert_equal 'ста двадцати трёх евро четырнадцати центов', RuPropisju.amount_in_words(123.14, 'eur', :ru_gen)
|
50
|
+
assert_equal 'ста двадцати трёх долларов четырнадцати центов', RuPropisju.amount_in_words(123.14, 'usd', :ru_gen)
|
51
|
+
|
36
52
|
# russian locale (творительный падеж)
|
37
53
|
assert_equal "ста двадцатью тремя рублями", RuPropisju.amount_in_words(123, :rur, :ru_from)
|
38
54
|
assert_equal "ста двадцатью тремя рублями", RuPropisju.amount_in_words(123, :rub, :ru_from)
|
@@ -101,14 +117,27 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
101
117
|
assert_equal "шести тысячах семистах двадцати семи", RuPropisju.propisju(6727, 1, :ru_in)
|
102
118
|
assert_equal "одном миллионе одном", RuPropisju.propisju(1_000_001, 1, :ru_in)
|
103
119
|
assert_equal "одном миллионе", RuPropisju.propisju(1_000_000, 1, :ru_in)
|
104
|
-
assert_equal "восьми миллионах шестистах
|
105
|
-
assert_equal "восьми миллионах шестистах
|
106
|
-
assert_equal "восьми миллионах шестистах
|
120
|
+
assert_equal "восьми миллионах шестистах пятидесяти двух", RuPropisju.propisju(8000652, 1, :ru_in)
|
121
|
+
assert_equal "восьми миллионах шестистах пятидесяти двух", RuPropisju.propisju(8000652, 2, :ru_in)
|
122
|
+
assert_equal "восьми миллионах шестистах пятидесяти двух", RuPropisju.propisju(8000652, 3, :ru_in)
|
107
123
|
assert_equal "сорока пяти", RuPropisju.propisju(45, 1, :ru_in)
|
108
124
|
assert_equal "пяти", RuPropisju.propisju(5, 1, :ru_in)
|
109
125
|
assert_equal "шестистах двенадцати", RuPropisju.propisju(612, 1, :ru_in)
|
110
126
|
assert_equal "нуле", RuPropisju.propisju(0, 1, :ru_in)
|
111
127
|
|
128
|
+
# родительный падеж для русской локали
|
129
|
+
assert_equal 'пятисот двадцати трёх', RuPropisju.propisju(523, 1, :ru_gen)
|
130
|
+
assert_equal 'шести тысяч семисот двадцати семи', RuPropisju.propisju(6727, 1, :ru_gen)
|
131
|
+
assert_equal 'одного миллиона одного', RuPropisju.propisju(1_000_001, 1, :ru_gen)
|
132
|
+
assert_equal 'одного миллиона', RuPropisju.propisju(1_000_000, 1, :ru_gen)
|
133
|
+
assert_equal 'восьми миллионов шестисот пятидесяти одного', RuPropisju.propisju(8000651, 1, :ru_gen)
|
134
|
+
assert_equal 'восьми миллионов шестисот пятидесяти одной', RuPropisju.propisju(8000651, 2, :ru_gen)
|
135
|
+
assert_equal 'восьми миллионов шестисот пятидесяти одного', RuPropisju.propisju(8000651, 3, :ru_gen)
|
136
|
+
assert_equal 'сорока пяти', RuPropisju.propisju(45, 1, :ru_gen)
|
137
|
+
assert_equal 'пяти', RuPropisju.propisju(5, 1, :ru_gen)
|
138
|
+
assert_equal 'шестисот двенадцати', RuPropisju.propisju(612, 1, :ru_gen)
|
139
|
+
assert_equal 'нуля', RuPropisju.propisju(0, 1, :ru_gen)
|
140
|
+
|
112
141
|
# творительный падеж для русской локали
|
113
142
|
assert_equal "пятьюстами двадцатью тремя", RuPropisju.propisju(523, 1, :ru_from)
|
114
143
|
assert_equal "шестью тысячами семьюстами двадцатью семью", RuPropisju.propisju(6727, 1, :ru_from)
|
@@ -153,6 +182,13 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
153
182
|
assert_equal "двухстах двенадцати сволочах", RuPropisju.propisju_shtuk(212.00, 2, ["сволочи", "сволочах", "сволочах"], :ru_in)
|
154
183
|
assert_equal "двухстах двенадцати целых четырёх десятых кусках", RuPropisju.propisju_shtuk(212.40, 2, ["куске", "кусках", "кусках"], :ru_in)
|
155
184
|
|
185
|
+
# родительный падеж русской локали
|
186
|
+
assert_equal 'шести целых', RuPropisju.propisju_shtuk(6, 2, %w(целой целых целых), :ru_gen)
|
187
|
+
assert_equal 'двадцати пяти колёс', RuPropisju.propisju_shtuk(25, 3, %w(колёса колёс колёс), :ru_gen)
|
188
|
+
assert_equal 'двадцати одной подставы', RuPropisju.propisju_shtuk(21, 2, %w(подставы подстав подстав), :ru_gen)
|
189
|
+
assert_equal 'двухсот двенадцати сволочей', RuPropisju.propisju_shtuk(212.00, 2, %w(сволочи сволочей сволочей), :ru_gen)
|
190
|
+
assert_equal 'двухсот двенадцати целых четырёх десятых кусков', RuPropisju.propisju_shtuk(212.40, 2, %w(куска кусков кусков), :ru_gen)
|
191
|
+
|
156
192
|
# творительный падеж русской локали
|
157
193
|
assert_equal "шестью целыми", RuPropisju.propisju_shtuk(6, 2, ["целой", "целыми", "целыми"], :ru_from)
|
158
194
|
assert_equal "двадцатью пятью колесами", RuPropisju.propisju_shtuk(25, 3, ["колесом", "колесами", "колесами"], :ru_from)
|
@@ -190,6 +226,17 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
190
226
|
assert_equal "двухстах трёх целых сорока одной сотой", RuPropisju.propisju(203.41, 1, :ru_in)
|
191
227
|
assert_equal "четырёхстах сорока двух целых пяти десятых", RuPropisju.propisju(442.50000, 1, :ru_in)
|
192
228
|
|
229
|
+
# родительный падеж русской локали
|
230
|
+
assert_equal 'шести целых пяти десятых', RuPropisju.propisju(6.50, 1, :ru_gen)
|
231
|
+
assert_equal 'шести', RuPropisju.propisju(6.0, 1, :ru_gen)
|
232
|
+
assert_equal 'тридцати миллиардов целых ста одиннадцати тысячных', RuPropisju.propisju(3 * 10**10 + 0.111, 1, :ru_gen)
|
233
|
+
assert_equal 'тридцати', RuPropisju.propisju(30.0, 1, :ru_gen)
|
234
|
+
assert_equal 'тридцати целых одной десятой', RuPropisju.propisju(30.1, 1, :ru_gen)
|
235
|
+
assert_equal 'трёхсот сорока одной целой девяти десятых', RuPropisju.propisju(341.9, 1, :ru_gen)
|
236
|
+
assert_equal 'трёхсот сорока одной целой двухсот сорока пяти тысячных', RuPropisju.propisju(341.245, 1, :ru_gen)
|
237
|
+
assert_equal 'двухсот трёх целых сорока одной сотой', RuPropisju.propisju(203.41, 1, :ru_gen)
|
238
|
+
assert_equal 'четырёхсот сорока двух целых пяти десятых', RuPropisju.propisju(442.50000, 1, :ru_gen)
|
239
|
+
|
193
240
|
# творительный падеж русской локали
|
194
241
|
assert_equal "шестью целыми пятью десятыми", RuPropisju.propisju(6.50, 1, :ru_from)
|
195
242
|
assert_equal "шестью", RuPropisju.propisju(6.0, 1, :ru_from)
|
@@ -239,6 +286,11 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
239
286
|
assert_equal "триста тридцать два рубля", RuPropisju.rublej(331.995)
|
240
287
|
assert_equal "один рубль", RuPropisju.rubl(1)
|
241
288
|
assert_equal "три рубля 14 копеек", RuPropisju.rublja(3.14)
|
289
|
+
assert_equal "три рубля 2 копейки", RuPropisju.rublja(3.02)
|
290
|
+
assert_equal "одна тысяча рублей", RuPropisju.rublja(1000)
|
291
|
+
assert_equal "одна тысяча рублей", RuPropisju.rublja(1000.0)
|
292
|
+
assert_equal "1000 рублей", RuPropisju.digit_rublej(1000)
|
293
|
+
assert_equal "345 рублей 2 копейки", RuPropisju.digit_rublej(345.02)
|
242
294
|
|
243
295
|
# ru locale предложный падеж
|
244
296
|
assert_equal "нуле рублях 0 копейках", RuPropisju.rublej(0, :ru_in)
|
@@ -249,6 +301,15 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
249
301
|
assert_equal "одном рубле", RuPropisju.rubl(1, :ru_in)
|
250
302
|
assert_equal "трёх рублях 14 копейках", RuPropisju.rublja(3.14, :ru_in)
|
251
303
|
|
304
|
+
# ru locale родительный падеж
|
305
|
+
assert_equal 'нуля рублей 0 копеек', RuPropisju.rublej(0, :ru_gen)
|
306
|
+
assert_equal 'ста двадцати трёх рублей', RuPropisju.rublej(123, :ru_gen)
|
307
|
+
assert_equal 'трёхсот сорока трёх рублей 20 копеек', RuPropisju.rublej(343.20, :ru_gen)
|
308
|
+
assert_equal '42 копеек', RuPropisju.rublej(0.4187, :ru_gen)
|
309
|
+
assert_equal 'трёхсот тридцати двух рублей', RuPropisju.rublej(331.995, :ru_gen)
|
310
|
+
assert_equal 'одного рубля', RuPropisju.rubl(1, :ru_gen)
|
311
|
+
assert_equal 'трёх рублей 14 копеек', RuPropisju.rublja(3.14, :ru_gen)
|
312
|
+
|
252
313
|
# ru locale творительный падеж
|
253
314
|
assert_equal "нулём рублями 0 копейками", RuPropisju.rublej(0, :ru_from)
|
254
315
|
assert_equal "ста двадцатью тремя рублями", RuPropisju.rublej(123, :ru_from)
|
@@ -287,6 +348,16 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
287
348
|
assert_equal "трёх гривнах четырнадцати копейках", RuPropisju.grivny(3.14, :ru_in)
|
288
349
|
assert_equal "нуле гривнах нуле копейках", RuPropisju.griven(0, :ru_in)
|
289
350
|
|
351
|
+
# ru locale родительный падеж
|
352
|
+
assert_equal 'ста двадцати трёх гривен', RuPropisju.griven(123, :ru_gen)
|
353
|
+
assert_equal 'ста двадцати четырёх гривен', RuPropisju.griven(124, :ru_gen)
|
354
|
+
assert_equal 'трёхсот сорока трёх гривен двадцати копеек', RuPropisju.griven(343.20, :ru_gen)
|
355
|
+
assert_equal 'сорока двух копеек', RuPropisju.griven(0.4187, :ru_gen)
|
356
|
+
assert_equal 'трёхсот тридцати двух гривен', RuPropisju.griven(331.995, :ru_gen)
|
357
|
+
assert_equal 'одной гривны', RuPropisju.grivna(1, :ru_gen)
|
358
|
+
assert_equal 'трёх гривен четырнадцати копеек', RuPropisju.grivny(3.14, :ru_gen)
|
359
|
+
assert_equal 'нуля гривен нуля копеек', RuPropisju.griven(0, :ru_gen)
|
360
|
+
|
290
361
|
# ru locale творительный падеж
|
291
362
|
assert_equal "ста двадцатью тремя гривнами", RuPropisju.griven(123, :ru_from)
|
292
363
|
assert_equal "ста двадцатью четырьмя гривнами", RuPropisju.griven(124, :ru_from)
|
@@ -330,6 +401,17 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
330
401
|
assert_equal "трёх тенге четырнадцати тиынах", RuPropisju.tenge(3.14, :ru_in)
|
331
402
|
assert_equal "нуле тенге нуле тиынах", RuPropisju.tenge(0, :ru_in)
|
332
403
|
|
404
|
+
# ru locale родительный падеж
|
405
|
+
assert_equal 'ста двадцати трёх тенге', RuPropisju.tenge(123, :ru_gen)
|
406
|
+
assert_equal 'ста двадцати четырёх тенге', RuPropisju.tenge(124, :ru_gen)
|
407
|
+
assert_equal 'трёхсот сорока трёх тенге двадцати тиынов', RuPropisju.tenge(343.20, :ru_gen)
|
408
|
+
assert_equal 'сорока двух тиынов', RuPropisju.tenge(0.4187, :ru_gen)
|
409
|
+
assert_equal 'трёхсот тридцати двух тенге', RuPropisju.tenge(331.995, :ru_gen)
|
410
|
+
assert_equal 'трёхсот тридцати одного тенге девяноста девяти тиынов', RuPropisju.tenge(331.985, :ru_gen)
|
411
|
+
assert_equal 'одного тенге', RuPropisju.tenge(1, :ru_gen)
|
412
|
+
assert_equal 'трёх тенге четырнадцати тиынов', RuPropisju.tenge(3.14, :ru_gen)
|
413
|
+
assert_equal 'нуля тенге нуля тиынов', RuPropisju.tenge(0, :ru_gen)
|
414
|
+
|
333
415
|
# ru locale творительный падеж
|
334
416
|
assert_equal "ста двадцатью тремя тенге", RuPropisju.tenge(123, :ru_from)
|
335
417
|
assert_equal "ста двадцатью четырьмя тенге", RuPropisju.tenge(124, :ru_from)
|
@@ -366,6 +448,14 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
366
448
|
assert_equal "21 копейке", RuPropisju.kopeika(21, :ru_in)
|
367
449
|
assert_equal "3 копейках", RuPropisju.kopeiki(3, :ru_in)
|
368
450
|
|
451
|
+
# ru locale родительный падеж
|
452
|
+
assert_equal 'нуля рублей 0 копеек', RuPropisju.kopeek(0, :ru_gen)
|
453
|
+
assert_equal 'ста двадцати трёх рублей', RuPropisju.kopeek(12300, :ru_gen)
|
454
|
+
assert_equal 'трёх рублей 14 копеек', RuPropisju.kopeek(314, :ru_gen)
|
455
|
+
assert_equal '32 копеек', RuPropisju.kopeek(32, :ru_gen)
|
456
|
+
assert_equal '21 копейки', RuPropisju.kopeika(21, :ru_gen)
|
457
|
+
assert_equal '3 копеек', RuPropisju.kopeiki(3, :ru_gen)
|
458
|
+
|
369
459
|
# ru locale творительный падеж
|
370
460
|
assert_equal "нулём рублями 0 копейками", RuPropisju.kopeek(0, :ru_from)
|
371
461
|
assert_equal "ста двадцатью тремя рублями", RuPropisju.kopeek(12300, :ru_from)
|
@@ -381,4 +471,45 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
381
471
|
assert_equal "21 копійка", RuPropisju.kopeika(21, :ua)
|
382
472
|
assert_equal "3 копійки", RuPropisju.kopeiki(3, :ua)
|
383
473
|
end
|
474
|
+
|
475
|
+
def test_options
|
476
|
+
options = { :always_show_fraction => true }
|
477
|
+
assert_equal "ноль рублей 0 копеек", RuPropisju.rublej(0, :ru, options)
|
478
|
+
assert_equal "сто двадцать три рубля 0 копеек", RuPropisju.rublej(123, :ru, options)
|
479
|
+
assert_equal "триста сорок три рубля 20 копеек", RuPropisju.rublej(343.20, :ru, options)
|
480
|
+
assert_equal "триста сорок три рубля 70 копеек", RuPropisju.rublej(343.70, :ru, options)
|
481
|
+
|
482
|
+
assert_equal "42 копейки", RuPropisju.rublej(0.4187, :ru, options)
|
483
|
+
assert_equal "триста тридцать два рубля 0 копеек", RuPropisju.rublej(331.995, :ru, options)
|
484
|
+
assert_equal "один рубль 0 копеек", RuPropisju.rubl(1, :ru, options)
|
485
|
+
assert_equal "три рубля 14 копеек", RuPropisju.rublja(3.14, :ru, options)
|
486
|
+
assert_equal "три рубля 2 копейки", RuPropisju.rublja(3.02, :ru, options)
|
487
|
+
assert_equal "одна тысяча рублей 0 копеек", RuPropisju.rublja(1000, :ru, options)
|
488
|
+
|
489
|
+
assert_equal "1000 рублей 0 копеек", RuPropisju.digit_rublej(1000, :ru, options)
|
490
|
+
assert_equal "345 рублей 2 копейки", RuPropisju.digit_rublej(345.02, :ru, options)
|
491
|
+
assert_equal "4 рубля 60 копеек", RuPropisju.digit_rublej(4.60, :ru, options)
|
492
|
+
|
493
|
+
options_custom_formatter = { :fraction_formatter => '%02d', :integrals_formatter => '+%d', :integrals_delimiter => ' ', :always_show_fraction => true }
|
494
|
+
assert_equal "ноль рублей 00 копеек", RuPropisju.rublej(0, :ru, options_custom_formatter)
|
495
|
+
assert_equal "сто двадцать три рубля 00 копеек", RuPropisju.rublej(123, :ru, options_custom_formatter)
|
496
|
+
assert_equal "триста сорок три рубля 20 копеек", RuPropisju.rublej(343.20, :ru, options_custom_formatter)
|
497
|
+
|
498
|
+
assert_equal "42 копейки", RuPropisju.rublej(0.4187, :ru, options_custom_formatter)
|
499
|
+
assert_equal "триста тридцать два рубля 00 копеек", RuPropisju.rublej(331.995, :ru, options_custom_formatter)
|
500
|
+
assert_equal "один рубль 00 копеек", RuPropisju.rubl(1, :ru, options_custom_formatter)
|
501
|
+
assert_equal "три рубля 14 копеек", RuPropisju.rublja(3.14, :ru, options_custom_formatter)
|
502
|
+
assert_equal "три рубля 02 копейки", RuPropisju.rublja(3.02, :ru, options_custom_formatter)
|
503
|
+
assert_equal "одна тысяча рублей 00 копеек", RuPropisju.rublja(1000, :ru, options_custom_formatter)
|
504
|
+
|
505
|
+
assert_equal "+1 000 рублей 00 копеек", RuPropisju.digit_rublej(1000, :ru, options_custom_formatter)
|
506
|
+
assert_equal "+1 000 рублей 00 копеек", RuPropisju.digit_rublej(1000.0, :ru, options_custom_formatter)
|
507
|
+
assert_equal "+345 рублей 02 копейки", RuPropisju.digit_rublej(345.02, :ru, options_custom_formatter)
|
508
|
+
|
509
|
+
assert_equal "триста тридцять дві гривні нуль копійок", RuPropisju.griven(331.995, :ua, options_custom_formatter)
|
510
|
+
assert_equal "три тенге ноль тиынов", RuPropisju.tenge(3, :ru, options_custom_formatter)
|
511
|
+
assert_equal "триста сорок пять долларов два цента", RuPropisju.dollarov(345.02, :ru, options_custom_formatter)
|
512
|
+
assert_equal "три доллара ноль центов", RuPropisju.dollarov(3, :ru, options_custom_formatter)
|
513
|
+
assert_equal "три евро ноль центов", RuPropisju.evro(3, :ru, options_custom_formatter)
|
514
|
+
end
|
384
515
|
end
|
metadata
CHANGED
@@ -1,76 +1,71 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ru_propisju
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.5.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 2
|
8
|
-
- 4
|
9
|
-
- 0
|
10
|
-
version: 2.4.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Julik Tarkhanov
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
12
|
+
date: 2015-09-03 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jeweler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 63
|
28
|
-
segments:
|
29
|
-
- 1
|
30
|
-
- 8
|
31
|
-
- 4
|
18
|
+
requirements:
|
19
|
+
- - '='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 1.8.4
|
33
22
|
type: :development
|
34
|
-
version_requirements: *id001
|
35
23
|
prerelease: false
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
25
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
45
|
-
- 0
|
46
|
-
version: "0"
|
47
|
-
type: :development
|
48
|
-
version_requirements: *id002
|
49
|
-
prerelease: false
|
26
|
+
requirements:
|
27
|
+
- - '='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.8.4
|
30
|
+
- !ruby/object:Gem::Dependency
|
50
31
|
name: rake
|
51
|
-
|
52
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
53
33
|
none: false
|
54
|
-
requirements:
|
55
|
-
- -
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
|
58
|
-
segments:
|
59
|
-
- 0
|
60
|
-
version: "0"
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
61
38
|
type: :development
|
62
|
-
version_requirements: *id003
|
63
39
|
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
64
47
|
name: test-unit
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
65
62
|
description:
|
66
63
|
email: me@julik.nl
|
67
64
|
executables: []
|
68
|
-
|
69
65
|
extensions: []
|
70
|
-
|
71
|
-
extra_rdoc_files:
|
66
|
+
extra_rdoc_files:
|
72
67
|
- README.rdoc
|
73
|
-
files:
|
68
|
+
files:
|
74
69
|
- Gemfile
|
75
70
|
- History.txt
|
76
71
|
- README.rdoc
|
@@ -78,41 +73,32 @@ files:
|
|
78
73
|
- lib/ru_propisju.rb
|
79
74
|
- ru_propisju.gemspec
|
80
75
|
- test/test_ru_propisju.rb
|
81
|
-
has_rdoc: true
|
82
76
|
homepage: http://github.com/julik/ru_propisju
|
83
|
-
licenses:
|
77
|
+
licenses:
|
84
78
|
- MIT
|
85
79
|
post_install_message:
|
86
80
|
rdoc_options: []
|
87
|
-
|
88
|
-
require_paths:
|
81
|
+
require_paths:
|
89
82
|
- lib
|
90
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
84
|
none: false
|
92
|
-
requirements:
|
93
|
-
- -
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
|
96
|
-
segments:
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
segments:
|
97
90
|
- 0
|
98
|
-
|
99
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
hash: 1089524318259268093
|
92
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
93
|
none: false
|
101
|
-
requirements:
|
102
|
-
- -
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
|
105
|
-
segments:
|
106
|
-
- 0
|
107
|
-
version: "0"
|
94
|
+
requirements:
|
95
|
+
- - ! '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
108
98
|
requirements: []
|
109
|
-
|
110
99
|
rubyforge_project:
|
111
|
-
rubygems_version: 1.
|
100
|
+
rubygems_version: 1.8.23.2
|
112
101
|
signing_key:
|
113
102
|
specification_version: 3
|
114
|
-
summary:
|
115
|
-
Q9GD0LzQvNCwINC/0YDQvtC/0LjRgdGM0Y4=
|
116
|
-
|
103
|
+
summary: Cумма прописью
|
117
104
|
test_files: []
|
118
|
-
|