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