ru_propisju 2.4.0 → 2.5.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/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 2.5.0
2
+
3
+ * Добавлен набор опций форматирования (https://github.com/julik/ru_propisju/pull/16)
4
+
1
5
  === 2.4.0
2
6
 
3
7
  * Добавлен творительный падеж (только для русской локали) (https://github.com/julik/ru_propisju/pull/15)
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.4.0'
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 городах, поэтому ru_in - in == 'в' (если нужен будет творительный падеж - делайте ru_from aka из города from == 'из')
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 => "одном", 2 => 'одной', 3 => 'одном'},
120
- 2 => {1 => "двух", 2 => 'двух', 3 => 'двух'},
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
- def amount_in_words(amount, currency, locale = :ru)
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
- def rublej(amount, locale = :ru)
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
- def rublej_extended_format(amount, locale = :ru)
323
- "#{digit_rublej(amount, locale)} (#{rublej(amount, locale)})"
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
- def digit_rublej(amount, locale = :ru)
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
- def griven(amount, locale = :ru)
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
- def dollarov(amount, locale = :ru)
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
- def evro(amount, locale = :ru)
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
- def tenge(amount, locale = :ru)
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
- def kopeek(amount, locale = :ru)
398
- rublej(amount / 100.0, locale)
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
- if integrals_as_number
424
- parts << amount.to_i << choose_plural(amount, integrals) unless amount.to_i == 0
425
- else
426
- parts << propisju_int(amount.to_i, money_gender, integrals, locale) unless amount.to_i == 0
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
- unless kop.zero?
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 ? '0' : locale_data['0']
452
- frac = fraction_as_number ? '0' : locale_data['0']
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 = %q{ru_propisju}
8
- s.version = "2.4.0"
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 = %q{2015-04-13}
13
- s.email = %q{me@julik.nl}
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 = %q{http://github.com/julik/ru_propisju}
26
+ s.homepage = "http://github.com/julik/ru_propisju"
27
27
  s.licenses = ["MIT"]
28
28
  s.require_paths = ["lib"]
29
- s.rubygems_version = %q{1.6.2}
30
- s.summary = %q{Cумма прописью}
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
@@ -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 "восьми миллионах шестистах пятьдесяти двух", RuPropisju.propisju(8000652, 1, :ru_in)
105
- assert_equal "восьми миллионах шестистах пятьдесяти двух", RuPropisju.propisju(8000652, 2, :ru_in)
106
- assert_equal "восьми миллионах шестистах пятьдесяти двух", RuPropisju.propisju(8000652, 3, :ru_in)
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
- hash: 31
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
- date: 2015-04-13 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
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
- name: jeweler
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
- hash: 3
44
- segments:
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
- - !ruby/object:Gem::Dependency
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
- hash: 3
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
- hash: 3
96
- segments:
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ segments:
97
90
  - 0
98
- version: "0"
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
- hash: 3
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.6.2
100
+ rubygems_version: 1.8.23.2
112
101
  signing_key:
113
102
  specification_version: 3
114
- summary: !binary |
115
- Q9GD0LzQvNCwINC/0YDQvtC/0LjRgdGM0Y4=
116
-
103
+ summary: Cумма прописью
117
104
  test_files: []
118
-