ru_propisju 2.1.3 → 2.1.4
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 +4 -0
- data/lib/ru_propisju.rb +25 -7
- data/ru_propisju.gemspec +4 -4
- data/test/test_ru_propisju.rb +6 -0
- metadata +42 -64
data/History.txt
CHANGED
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.
|
9
|
+
VERSION = '2.1.4'
|
10
10
|
|
11
11
|
# http://www.xe.com/symbols.php
|
12
12
|
# (лица, приближенные форексам и всяким там валютам и курсам)
|
@@ -178,12 +178,13 @@ module RuPropisju
|
|
178
178
|
#
|
179
179
|
# rublej(345.2) #=> "триста сорок пять рублей 20 копеек"
|
180
180
|
def rublej(amount, locale = :ru)
|
181
|
-
parts = []
|
182
181
|
locale_data = pick_locale(TRANSLATIONS, locale)
|
183
|
-
|
184
182
|
integrals = locale_data[:rub_integral]
|
185
183
|
fractions = locale_data[:rub_fraction]
|
186
184
|
|
185
|
+
return zero(locale_data, integrals, fractions, locale == :ru) if amount.zero?
|
186
|
+
|
187
|
+
parts = []
|
187
188
|
parts << propisju_int(amount.to_i, 1, integrals, locale) unless amount.to_i == 0
|
188
189
|
if amount.kind_of?(Float)
|
189
190
|
remainder = (amount.divmod(1)[1]*100).round
|
@@ -220,7 +221,9 @@ module RuPropisju
|
|
220
221
|
|
221
222
|
integrals = locale_root[:uah_integral]
|
222
223
|
fractions = locale_root[:uah_fraction]
|
223
|
-
|
224
|
+
|
225
|
+
return zero(locale_root, integrals, fractions, locale == 'ru') if amount.zero?
|
226
|
+
|
224
227
|
parts = []
|
225
228
|
parts << propisju_int(amount.to_i, 2, integrals, locale) unless amount.to_i == 0
|
226
229
|
if amount.kind_of? Float
|
@@ -243,7 +246,9 @@ module RuPropisju
|
|
243
246
|
|
244
247
|
integrals = locale_root[:usd_integral]
|
245
248
|
fractions = locale_root[:usd_fraction]
|
246
|
-
|
249
|
+
|
250
|
+
return zero(locale_root, integrals, fractions, locale == 'ru') if amount.zero?
|
251
|
+
|
247
252
|
parts << propisju_int(amount.to_i, 1, integrals, locale) unless amount.to_i == 0
|
248
253
|
if amount.kind_of?(Float)
|
249
254
|
remainder = (amount.divmod(1)[1]*100).round
|
@@ -266,7 +271,9 @@ module RuPropisju
|
|
266
271
|
|
267
272
|
integrals = locale_data[:eur_integral]
|
268
273
|
fractions = locale_data[:eur_fraction]
|
269
|
-
|
274
|
+
|
275
|
+
return zero(locale_root, integrals, fractions, locale == 'ru') if amount.zero?
|
276
|
+
|
270
277
|
parts << propisju_int(amount.to_i, 1, integrals, locale) unless amount.to_i == 0
|
271
278
|
if amount.kind_of?(Float)
|
272
279
|
remainder = (amount.divmod(1)[1]*100).round
|
@@ -303,6 +310,11 @@ module RuPropisju
|
|
303
310
|
|
304
311
|
private
|
305
312
|
|
313
|
+
def zero(locale_data, integrals, fractions, fraction_as_number)
|
314
|
+
frac = fraction_as_number ? '0' : locale_data['0']
|
315
|
+
parts = [locale_data['0'], integrals[-1], frac, fractions[-1]]
|
316
|
+
parts.join(' ')
|
317
|
+
end
|
306
318
|
|
307
319
|
# Cоставляет число прописью для чисел до тысячи
|
308
320
|
|
@@ -312,6 +324,9 @@ module RuPropisju
|
|
312
324
|
|
313
325
|
locale = locale.to_s
|
314
326
|
|
327
|
+
# Ноль чего-то
|
328
|
+
# return "ноль %s" % item_forms[3] if remaining_amount_or_nil.zero?
|
329
|
+
|
315
330
|
rest, rest1, chosen_ordinal, ones, tens, hundreds = [nil]*6
|
316
331
|
|
317
332
|
rest = remaining_amount % 1000
|
@@ -437,6 +452,9 @@ module RuPropisju
|
|
437
452
|
|
438
453
|
locale_root = pick_locale(TRANSLATIONS, locale)
|
439
454
|
|
455
|
+
# zero!
|
456
|
+
return [locale_root['0'], item_forms[-1]].compact.join(' ') if amount.zero?
|
457
|
+
|
440
458
|
fractions = [
|
441
459
|
[:trillions, 1_000_000_000_000],
|
442
460
|
[:billions, 1_000_000_000],
|
@@ -484,5 +502,5 @@ module RuPropisju
|
|
484
502
|
|
485
503
|
public_instance_methods(true).map{|m| module_function(m) }
|
486
504
|
|
487
|
-
module_function :propisju_int, :propisju_float, :compose_ordinal, :pick_locale
|
505
|
+
module_function :zero, :propisju_int, :propisju_float, :compose_ordinal, :pick_locale
|
488
506
|
end
|
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.
|
8
|
+
s.version = "2.1.4"
|
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 = "2012-
|
12
|
+
s.date = "2012-04-02"
|
13
13
|
s.email = "me@julik.nl"
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"README.rdoc"
|
@@ -26,8 +26,8 @@ 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.
|
30
|
-
s.summary = "C\
|
29
|
+
s.rubygems_version = "1.8.15"
|
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
@@ -63,6 +63,7 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
63
63
|
assert_equal "сорок пять", RuPropisju.propisju(45, 1)
|
64
64
|
assert_equal "пять", RuPropisju.propisju(5, 1)
|
65
65
|
assert_equal "шестьсот двенадцать", RuPropisju.propisju(612, 1)
|
66
|
+
assert_equal "ноль", RuPropisju.propisju(0, 1)
|
66
67
|
|
67
68
|
|
68
69
|
# ukrainian locale
|
@@ -129,6 +130,7 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
129
130
|
end
|
130
131
|
|
131
132
|
def test_rublej
|
133
|
+
assert_equal "ноль рублей 0 копеек", RuPropisju.rublej(0)
|
132
134
|
assert_equal "сто двадцать три рубля", RuPropisju.rublej(123)
|
133
135
|
assert_equal "триста сорок три рубля 20 копеек", RuPropisju.rublej(343.20)
|
134
136
|
assert_equal "42 копейки", RuPropisju.rublej(0.4187)
|
@@ -153,6 +155,8 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
153
155
|
assert_equal "триста тридцать две гривны", RuPropisju.griven(331.995)
|
154
156
|
assert_equal "одна гривна", RuPropisju.grivna(1)
|
155
157
|
assert_equal "три гривны четырнадцать копеек", RuPropisju.grivny(3.14)
|
158
|
+
assert_equal "ноль гривен 0 копеек", RuPropisju.griven(0)
|
159
|
+
|
156
160
|
# ua locale
|
157
161
|
assert_equal "сто двадцять три гривні", RuPropisju.griven(123, :ua)
|
158
162
|
assert_equal "сто двадцять чотири гривні", RuPropisju.griven(124, :ua)
|
@@ -161,10 +165,12 @@ class TestRuPropisju < Test::Unit::TestCase
|
|
161
165
|
assert_equal "триста тридцять дві гривні", RuPropisju.griven(331.995, :ua)
|
162
166
|
assert_equal "одна гривня", RuPropisju.grivna(1, :ua)
|
163
167
|
assert_equal "три гривні чотирнадцять копійок", RuPropisju.grivny(3.14, :ua)
|
168
|
+
assert_equal "нуль гривень нуль копійок", RuPropisju.griven(0, :ua)
|
164
169
|
|
165
170
|
end
|
166
171
|
|
167
172
|
def test_kopeek
|
173
|
+
assert_equal "ноль рублей 0 копеек", RuPropisju.kopeek(0)
|
168
174
|
assert_equal "сто двадцать три рубля", RuPropisju.kopeek(12300)
|
169
175
|
assert_equal "три рубля 14 копеек", RuPropisju.kopeek(314)
|
170
176
|
assert_equal "32 копейки", RuPropisju.kopeek(32)
|
metadata
CHANGED
@@ -1,59 +1,45 @@
|
|
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.1.4
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 2
|
8
|
-
- 1
|
9
|
-
- 3
|
10
|
-
version: 2.1.3
|
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
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
type: :development
|
22
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 3
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
version: "0"
|
31
|
-
prerelease: false
|
32
|
-
requirement: *id001
|
12
|
+
date: 2012-04-02 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
33
15
|
name: jeweler
|
34
|
-
|
35
|
-
type: :development
|
36
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &8967760 !ruby/object:Gem::Requirement
|
37
17
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
|
43
|
-
- 0
|
44
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
45
23
|
prerelease: false
|
46
|
-
|
24
|
+
version_requirements: *8967760
|
25
|
+
- !ruby/object:Gem::Dependency
|
47
26
|
name: rake
|
27
|
+
requirement: &8967000 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *8967000
|
48
36
|
description:
|
49
37
|
email: me@julik.nl
|
50
38
|
executables: []
|
51
|
-
|
52
39
|
extensions: []
|
53
|
-
|
54
|
-
extra_rdoc_files:
|
40
|
+
extra_rdoc_files:
|
55
41
|
- README.rdoc
|
56
|
-
files:
|
42
|
+
files:
|
57
43
|
- Gemfile
|
58
44
|
- History.txt
|
59
45
|
- README.rdoc
|
@@ -62,39 +48,31 @@ files:
|
|
62
48
|
- ru_propisju.gemspec
|
63
49
|
- test/test_ru_propisju.rb
|
64
50
|
homepage: http://github.com/julik/ru_propisju
|
65
|
-
licenses:
|
51
|
+
licenses:
|
66
52
|
- MIT
|
67
53
|
post_install_message:
|
68
54
|
rdoc_options: []
|
69
|
-
|
70
|
-
require_paths:
|
55
|
+
require_paths:
|
71
56
|
- lib
|
72
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
58
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
segments:
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
segments:
|
79
64
|
- 0
|
80
|
-
|
81
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
hash: 792091439
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
67
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
90
72
|
requirements: []
|
91
|
-
|
92
73
|
rubyforge_project:
|
93
|
-
rubygems_version: 1.8.
|
74
|
+
rubygems_version: 1.8.15
|
94
75
|
signing_key:
|
95
76
|
specification_version: 3
|
96
|
-
summary:
|
97
|
-
Q9GD0LzQvNCwINC/0YDQvtC/0LjRgdGM0Y4=
|
98
|
-
|
77
|
+
summary: Cумма прописью
|
99
78
|
test_files: []
|
100
|
-
|