ru_propisju 2.1.0 → 2.1.1

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.1.1 / 2011-12-28
2
+
3
+ * Починено https://github.com/julik/ru_propisju/issues/3
4
+
1
5
  === 2.1.0 / 2011-12-28
2
6
 
3
7
  * Восстановлен старый API для choose_plural
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.1.0'
9
+ VERSION = '2.1.1'
10
10
 
11
11
  # http://www.xe.com/symbols.php
12
12
  # (лица, приближенные форексам и всяким там валютам и курсам)
@@ -178,17 +178,16 @@ module RuPropisju
178
178
  # rublej(345.2) #=> "триста сорок пять рублей 20 копеек"
179
179
  def rublej(amount, locale = :ru)
180
180
  parts = []
181
- locale_root = pick_locale(TRANSLATIONS, locale)
181
+ locale_data = pick_locale(TRANSLATIONS, locale)
182
182
 
183
- integrals = locale_root[:rub_integral]
184
- fractions = locale_root[:rub_fraction]
185
-
186
- parts << propisju_shtuk(amount.to_i, 1, integrals, locale) unless amount.to_i == 0
187
-
183
+ integrals = locale_data[:rub_integral]
184
+ fractions = locale_data[:rub_fraction]
185
+
186
+ parts << propisju_int(amount.to_i, 1, integrals, locale) unless amount.to_i == 0
188
187
  if amount.kind_of?(Float)
189
188
  remainder = (amount.divmod(1)[1]*100).round
190
- if remainder == 100
191
- parts = [propisju_shtuk(amount.to_i+1, 1, integrals, locale)]
189
+ if (remainder == 100)
190
+ parts = [propisju_int(amount.to_i + 1, 1, integrals, locale)]
192
191
  else
193
192
  kop = remainder.to_i
194
193
  unless kop.zero?
@@ -196,7 +195,7 @@ module RuPropisju
196
195
  end
197
196
  end
198
197
  end
199
-
198
+
200
199
  parts.join(' ')
201
200
  end
202
201
 
@@ -292,13 +291,13 @@ module RuPropisju
292
291
  # RuPropisju.propisju_shtuk(21, 3, "колесо", "колеса", "колес") #=> "двадцать одно колесо"
293
292
  # RuPropisju.propisju_shtuk(21, 1, "мужик", "мужика", "мужиков") #=> "двадцать один мужик"
294
293
  def propisju_shtuk(items, gender, forms, locale = :ru)
295
- r = if items == items.to_i
294
+ elements = if (items == items.to_i)
296
295
  [propisju(items, gender, locale), choose_plural(items, forms)]
297
296
  else
298
297
  [propisju(items, gender, locale), forms[1]]
299
298
  end
300
-
301
- r.join(" ")
299
+
300
+ elements.join(" ")
302
301
  end
303
302
 
304
303
  private
@@ -307,10 +306,11 @@ module RuPropisju
307
306
  # однако списковая форма строк выглядит предпочтительнее, поэтому интерфейс изменен.
308
307
  # по хорошему надо менять также внешний интерфейс, но это может сломать совместимость
309
308
  def compose_ordinal(into, remaining_amount, gender, item_forms = [], locale = :ru)
309
+
310
310
  locale = locale.to_s
311
-
311
+
312
312
  rest, rest1, chosen_ordinal, ones, tens, hundreds = [nil]*6
313
- #
313
+
314
314
  rest = remaining_amount % 1000
315
315
  remaining_amount = remaining_amount / 1000
316
316
  if rest.zero?
@@ -327,9 +327,11 @@ module RuPropisju
327
327
  # десятки
328
328
  rest = rest % 100
329
329
  rest1 = rest / 10
330
+
330
331
  # единички
331
332
  ones = ""
332
333
  tens = locale_root[rest1 == 1 ? rest : rest1 * 10]
334
+
333
335
  # индекс выбранной формы
334
336
  chosen_ordinal = 2
335
337
  if rest1 < 1 || rest1 > 1 # единицы
@@ -349,6 +351,7 @@ module RuPropisju
349
351
  item_forms[chosen_ordinal],
350
352
  into
351
353
  ].compact.reject(&:empty?).join(' ').strip
354
+
352
355
  return [plural, remaining_amount]
353
356
  end
354
357
 
@@ -443,15 +446,15 @@ module RuPropisju
443
446
 
444
447
  # единицы
445
448
  into, remaining_amount = compose_ordinal('', amount, gender, item_forms, locale)
446
-
449
+
447
450
  return into if remaining_amount.zero?
448
451
 
449
- [:thousands, :millions, :billions].each do |type|
452
+ [:thousands, :millions, :billions].each do |elem|
450
453
  into, remaining_amount = compose_ordinal(
451
454
  into,
452
455
  remaining_amount,
453
- (type == :thousands ? 2 : 1), # пол женский только для тысяч
454
- locale_root[type],
456
+ gender = (elem == :thousands ? 2 : 1), # пол женский только для тысяч
457
+ locale_root[elem],
455
458
  locale
456
459
  )
457
460
  return into if remaining_amount.zero?
data/ru_propisju.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "ru_propisju"
8
- s.version = "2.1.0"
8
+ s.version = "2.1.1"
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 = "2011-12-28"
12
+ s.date = "2012-02-29"
13
13
  s.email = "me@julik.nl"
14
14
  s.extra_rdoc_files = [
15
15
  "README.rdoc"
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.homepage = "http://github.com/julik/ru_propisju"
27
27
  s.licenses = ["MIT"]
28
28
  s.require_paths = ["lib"]
29
- s.rubygems_version = "1.8.11"
29
+ s.rubygems_version = "1.8.15"
30
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
@@ -20,7 +20,7 @@ class TestRuPropisju < Test::Unit::TestCase
20
20
  assert_equal "сто двадцать три евро", RuPropisju.amount_in_words(123, "eur")
21
21
  assert_equal "сто двадцать три евро четырнадцать центов", RuPropisju.amount_in_words(123.14, "eur")
22
22
  assert_equal "сто двадцать три доллара четырнадцать центов", RuPropisju.amount_in_words(123.14, "usd")
23
-
23
+
24
24
  # ua locale
25
25
  assert_equal "сто двадцять три рубля", RuPropisju.amount_in_words(123, :rur, :ua)
26
26
  assert_equal "сто двадцять три рубля", RuPropisju.amount_in_words(123, :rub, :ua)
@@ -31,7 +31,13 @@ class TestRuPropisju < Test::Unit::TestCase
31
31
  assert_equal "сто двадцять три євро чотирнадцять євроцентів", RuPropisju.amount_in_words(123.14, "eur", :ua)
32
32
  assert_equal "сто двадцять три долара чотирнадцять центів", RuPropisju.amount_in_words(123.14, "usd", :ua)
33
33
  end
34
-
34
+
35
+ def test_issue_3
36
+ assert_equal "два миллиона евро", RuPropisju.evro(2000000)
37
+ assert_equal "два миллиона рублей", RuPropisju.rublej(2000000)
38
+ assert_equal "два миллиона рублей", RuPropisju.amount_in_words(2000000, :rub)
39
+ end
40
+
35
41
  def test_propisju_dollarov
36
42
  assert_equal "сто двадцать один доллар пятьдесят один цент", RuPropisju.dollarov(121.51)
37
43
  assert_equal "сто двадцять один долар п'ятьдесят один цент", RuPropisju.dollarov(121.51, :ua)
@@ -99,6 +105,7 @@ class TestRuPropisju < Test::Unit::TestCase
99
105
  end
100
106
  end
101
107
 
108
+
102
109
  def test_choose_plural
103
110
  assert_equal "чемодана", RuPropisju.choose_plural(523, ["чемодан", "чемодана", "чемоданов"])
104
111
  assert_equal "партий", RuPropisju.choose_plural(6727, ["партия", "партии", "партий"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ru_propisju
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-28 00:00:00.000000000 Z
12
+ date: 2012-02-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jeweler
16
- requirement: &10722980 !ruby/object:Gem::Requirement
16
+ requirement: &4132640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *10722980
24
+ version_requirements: *4132640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &10722720 !ruby/object:Gem::Requirement
27
+ requirement: &4132360 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *10722720
35
+ version_requirements: *4132360
36
36
  description:
37
37
  email: me@julik.nl
38
38
  executables: []
@@ -68,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
68
  version: '0'
69
69
  requirements: []
70
70
  rubyforge_project:
71
- rubygems_version: 1.8.11
71
+ rubygems_version: 1.8.15
72
72
  signing_key:
73
73
  specification_version: 3
74
74
  summary: Cумма прописью