number_to_words_ru 0.2.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.
@@ -0,0 +1,8 @@
1
+ en:
2
+ numbers:
3
+ ones: [nought, one, two, three, four, five, six, seven, eight, nine]
4
+ teens: [ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen]
5
+ tens: [nought, ten, twenty, thirty, forty, fifty, sixty, seventy, nought, ninety]
6
+ union: and
7
+ hundreds: hundred
8
+ mega: [ones, thousand, million, billion, trillion, quadrillion, quintillion, sextillion, septillion, octillion, nonillion, decillion]
@@ -0,0 +1,52 @@
1
+ ru:
2
+ numbers:
3
+ ones_male: [ноль, один, два, три, четыре, пять, шесть, семь, восемь, девять]
4
+ ones_female: [ноль, однa, двe, три, четыре, пять, шесть, семь, восемь, девять]
5
+ teens: [десять, одиннадцать, двенадцать, тринадцать, четырнадцать, пятнадцать, шестнадцать, семнадцать, восемнадцать, девятнадцать]
6
+ tens: [ноль, десять, двадцать, тридцать, сорок, пятьдесят, шестьдесят, семьдесят, восемьдесят, девяносто]
7
+ hundreds: [ноль, сто, двести, триста, четыреста, пятьсот, шестьсот, семьсот, восемьсот, девятьсот]
8
+ thousands:
9
+ one: тысяча
10
+ few: тысячи
11
+ many: тысяч
12
+ millions:
13
+ one: миллион
14
+ few: миллиона
15
+ many: миллионов
16
+ billions:
17
+ one: миллиард
18
+ few: миллиарда
19
+ many: миллиардов
20
+ trillions:
21
+ one: триллион
22
+ few: триллионa
23
+ many: триллионов
24
+ quadrillions:
25
+ one: квадриллион
26
+ few: квадриллиона
27
+ many: квадриллионов
28
+ quintillions:
29
+ one: квинтиллион
30
+ few: квинтиллиона
31
+ many: квинтиллионов
32
+ sextillions:
33
+ one: секстиллион
34
+ few: секстиллиона
35
+ many: секстиллионов
36
+ septillions:
37
+ one: септиллион
38
+ few: секстиллиона
39
+ many: секстиллионов
40
+ octillions:
41
+ one: октиллион
42
+ few: октиллиона
43
+ many: октиллионов
44
+ nonillions:
45
+ one: нониллион
46
+ few: нониллиона
47
+ many: нониллионов
48
+ decillions:
49
+ one: дециллион
50
+ few: дециллиона
51
+ many: дециллионов
52
+ mega: [ones, thousands, millions, billions, trillions, quadrillions, quintillion, sextillions, septillions, octillions, nonillions, decillions]
@@ -0,0 +1,22 @@
1
+ ru_rule = lambda do |count|
2
+ case count
3
+ when Integer
4
+ case
5
+ when 1 == count
6
+ :one
7
+ when (2..4).include?(count)
8
+ :few
9
+ else
10
+ :many
11
+ end
12
+ else
13
+ :other
14
+ end
15
+ end
16
+
17
+ en_rule = lambda{|count| 1 == count ? :one : :other}
18
+
19
+ {
20
+ :ru => {:i18n => {:plural => {:rule => ru_rule}}},
21
+ :en => {:i18n => {:plural => {:rule => en_rule}}}
22
+ }
@@ -0,0 +1,42 @@
1
+ module ArrayAdditions
2
+ module Helpers
3
+ THOUSAND_CAPACITY = 1
4
+
5
+ def capacity_count
6
+ count = (self.length.to_f / 3).ceil
7
+ 1 == count ? nil : count
8
+ end
9
+
10
+ def figures_array_in_capacity capacity
11
+ self[capacity * 3, 3]
12
+ end
13
+
14
+ def number_in_capacity capacity
15
+ figures_array_in_capacity(capacity).reverse.join.to_i
16
+ end
17
+
18
+ def is_a_thousand_capacity? capacity
19
+ THOUSAND_CAPACITY == capacity
20
+ end
21
+
22
+ def ones
23
+ self[0] if 0 < self[0].to_i
24
+ end
25
+
26
+ def teens
27
+ tens_with_ones if 1 == tens
28
+ end
29
+
30
+ def tens
31
+ self[1] if self[1] and 0 < self[1].to_i
32
+ end
33
+
34
+ def tens_with_ones
35
+ [ones, tens] if ones and tens
36
+ end
37
+
38
+ def hundreds
39
+ self[2] if 0 < self[2].to_i
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,7 @@
1
+ module ArrayAdditions
2
+ module Validations
3
+ def validate_figure_array!
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ require 'number_to_words_ru/array_additions/helpers'
2
+ require 'number_to_words_ru/array_additions/validations'
@@ -0,0 +1,5 @@
1
+ class Array
2
+ def to_words
3
+ map &:to_words
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ class Integer
2
+ def to_words
3
+ to_figures_array.to_words Strategies::Base.factory
4
+ end
5
+
6
+ private
7
+
8
+ def to_figures_array
9
+ FiguresArray.new to_s.split(//).map(&:to_i)
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ class FiguresArray < Array
2
+ include ArrayAdditions::Helpers
3
+ include ArrayAdditions::Validations
4
+
5
+ def to_words strategy, options = nil
6
+ validate_figure_array!
7
+ strategy.convert self
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ require "i18n/backend/pluralization"
2
+ I18n::Backend::Simple.send(:include, I18n::Backend::Pluralization)
@@ -0,0 +1,10 @@
1
+ module Strategies
2
+ class Base
3
+ attr_accessor :figures, :words
4
+
5
+ def self.factory
6
+ "Strategies::#{I18n.locale.to_s.titleize}".constantize.new
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,69 @@
1
+ module Strategies
2
+ class En < Base
3
+ include TranslationsHelpers::En
4
+
5
+ attr_accessor :figures_in_previous_capacity
6
+
7
+ def convert figures
8
+ @figures = figures.reverse
9
+
10
+ @words = strings
11
+ @words.empty? ? zero : @words.reverse.join(' ')
12
+ end
13
+
14
+ private
15
+
16
+ def strings
17
+ if figures.capacity_count
18
+ complex_to_words
19
+ elsif figures.hundreds
20
+ simple_hundreds_to_words
21
+ elsif figures.tens or figures.ones
22
+ simple_to_words
23
+ else
24
+ []
25
+ end
26
+ end
27
+
28
+ def complex_to_words
29
+ words = []
30
+ figures.capacity_count.times do |capacity|
31
+ number_in_capacity_by_words = save_parent_figures do |parent_figures|
32
+ @figures = parent_figures.figures_array_in_capacity(capacity)
33
+ strings
34
+ end
35
+
36
+ if !number_in_capacity_by_words.empty?
37
+ words.push translation_megs(capacity) if 0 < capacity
38
+ words += number_in_capacity_by_words
39
+ end
40
+ end
41
+ words
42
+ end
43
+
44
+ def simple_hundreds_to_words
45
+ simple_to_words + [translation_hundreds(figures.hundreds)]
46
+ end
47
+
48
+ def simple_to_words
49
+ if figures.teens
50
+ [translation_teens(figures.ones)]
51
+ elsif figures.tens
52
+ figures.ones ?
53
+ [translation_tens_with_ones(figures.tens_with_ones)] :
54
+ [translation_tens(figures.tens)]
55
+ elsif figures.ones
56
+ [translation_ones(figures.ones)]
57
+ else
58
+ []
59
+ end
60
+ end
61
+
62
+ def save_parent_figures
63
+ parent_figures = @figures
64
+ result = yield(parent_figures)
65
+ @figures = parent_figures
66
+ result
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,69 @@
1
+ module Strategies
2
+ class Ru < Base
3
+ include TranslationsHelpers::Ru
4
+
5
+ def convert figures
6
+ @figures = figures.reverse
7
+ @words = strings
8
+
9
+ @words.empty? ? zero : @words.reverse.join(' ')
10
+ end
11
+
12
+ private
13
+
14
+ def strings gender = :male
15
+ if figures.capacity_count
16
+ complex_to_words
17
+ elsif figures.hundreds
18
+ simple_hundreds_to_words gender
19
+ elsif figures.tens or figures.ones
20
+ simple_to_words gender
21
+ else
22
+ []
23
+ end
24
+ end
25
+
26
+ def complex_to_words
27
+ words = []
28
+ figures.capacity_count.times do |capacity|
29
+ number_in_capacity_by_words = save_parent_figures do
30
+ @figures = figures.figures_array_in_capacity(capacity)
31
+ strings figures.is_a_thousand_capacity?(capacity) ? :female : :male
32
+ end
33
+
34
+ if !number_in_capacity_by_words.empty?
35
+ if 0 < capacity
36
+ words.push translation_megs(capacity, figures.number_in_capacity(capacity))
37
+ end
38
+ words += number_in_capacity_by_words
39
+ end
40
+ end
41
+ words
42
+ end
43
+
44
+ def simple_hundreds_to_words gender
45
+ simple_to_words(gender) + [translation_hundreds(figures.hundreds)]
46
+ end
47
+
48
+ def simple_to_words gender
49
+ if figures.teens
50
+ [translation_teens(figures.ones)]
51
+ elsif figures.tens
52
+ figures.ones ?
53
+ [translation_tens_with_ones(figures.tens_with_ones, gender)] :
54
+ [translation_tens(figures.tens)]
55
+ elsif figures.ones
56
+ [translation_ones(figures.ones, gender)]
57
+ else
58
+ []
59
+ end
60
+ end
61
+
62
+ def save_parent_figures
63
+ parent_figures = @figures
64
+ result = yield
65
+ @figures = parent_figures
66
+ result
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,3 @@
1
+ require 'number_to_words_ru/strategies/base'
2
+ require 'number_to_words_ru/strategies/ru'
3
+ require 'number_to_words_ru/strategies/en'
@@ -0,0 +1,9 @@
1
+ module TranslationsHelpers
2
+ module Base
3
+ I18N_NAMESPACE = :numbers
4
+
5
+ def t attribute, options = {}
6
+ I18n.t attribute, options.merge(:scope => I18N_NAMESPACE)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,37 @@
1
+ module TranslationsHelpers::En
2
+ include TranslationsHelpers::Base
3
+
4
+ private
5
+
6
+ def translation_megs capacity
7
+ t(:mega)[capacity]
8
+ end
9
+
10
+ def translation_teens number
11
+ t(:teens)[number]
12
+ end
13
+
14
+ def translation_tens number
15
+ t(:tens)[number]
16
+ end
17
+
18
+ def translation_ones number
19
+ t(:ones)[number]
20
+ end
21
+
22
+ def translation_tens_with_ones numbers
23
+ [translation_tens(numbers[1]), translation_ones(numbers[0])].join '-'
24
+ end
25
+
26
+ def translation_union
27
+ t :union
28
+ end
29
+
30
+ def translation_hundreds number
31
+ [t(:ones)[number], t(:hundreds)].join ' '
32
+ end
33
+
34
+ def zero
35
+ t(:ones_male)[0]
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ module TranslationsHelpers::Ru
2
+ include TranslationsHelpers::Base
3
+
4
+ private
5
+
6
+ def translation_megs capacity, number
7
+ t translation_mega(capacity), :count => number
8
+ end
9
+
10
+ def translation_teens number
11
+ t(:teens)[number]
12
+ end
13
+
14
+ def translation_tens number
15
+ t(:tens)[number]
16
+ end
17
+
18
+ def translation_ones number, gender
19
+ t([:ones, gender].join('_'))[number]
20
+ end
21
+
22
+ def translation_tens_with_ones numbers, gender
23
+ [translation_tens(numbers[1]), translation_ones(numbers[0], gender)].join ' '
24
+ end
25
+
26
+ def translation_hundreds number
27
+ t(:hundreds)[number]
28
+ end
29
+
30
+ def translation_mega capacity
31
+ t(:mega)[capacity]
32
+ end
33
+
34
+ def zero
35
+ t(:ones_male)[0]
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ require 'number_to_words_ru/translations_helpers/base'
2
+ require 'number_to_words_ru/translations_helpers/ru'
3
+ require 'number_to_words_ru/translations_helpers/en'
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+ require 'i18n'
3
+ require 'active_support/inflector'
4
+
5
+ require 'number_to_words_ru/translations_helpers'
6
+ require 'number_to_words_ru/strategies'
7
+ require 'number_to_words_ru/array_additions'
8
+ require 'number_to_words_ru/figures_array'
9
+
10
+ require 'number_to_words_ru/core_ext/integer'
11
+ require 'number_to_words_ru/core_ext/array'
12
+
13
+ module I18nInitialization
14
+ extend self
15
+
16
+ def init
17
+ I18n.load_path << locale_files
18
+ end
19
+
20
+ def locale_files
21
+ Dir[File.join(File.dirname(__FILE__), 'locales', '**/*')]
22
+ end
23
+ end
24
+
25
+ I18nInitialization.init
@@ -0,0 +1,27 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Array do
4
+ around :each do |example|
5
+ I18n.with_locale(:ru) do
6
+ example.run
7
+ end
8
+ end
9
+
10
+
11
+ describe 'to_words' do
12
+ context 'simple example' do
13
+ subject { [1, 2, 3] }
14
+ its(:to_words) { should == 3.times.map { |number| t(:ones_male)[number + 1] } }
15
+ end
16
+
17
+ context 'complex example' do
18
+ subject { [101, 21, 13] }
19
+
20
+ its(:to_words) { should == [
21
+ [t(:hundreds)[1], t(:ones_male)[1]].join(' '),
22
+ [t(:tens)[2], t(:ones_male)[1]].join(' '),
23
+ t(:teens)[3]
24
+ ] }
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,279 @@
1
+ require './spec/spec_helper'
2
+
3
+ describe Integer do
4
+ around :each do |example|
5
+ I18n.with_locale(:ru) do
6
+ example.run
7
+ end
8
+ end
9
+
10
+ describe '#to_words' do
11
+ describe 'ones' do
12
+ context '0 as uniq example' do
13
+ subject { 0 }
14
+ its(:to_words) { should == t(:ones_male)[0] }
15
+ end
16
+
17
+ context '1 as lower example' do
18
+ subject { 1 }
19
+ its(:to_words) { should == t(:ones_male)[1] }
20
+ end
21
+
22
+ context '9 as upper example' do
23
+ subject { 9 }
24
+ its(:to_words) { should == t(:ones_male)[9] }
25
+ end
26
+ end
27
+
28
+ describe 'teens' do
29
+ context '10 as uniq example' do
30
+ subject { 10 }
31
+ its(:to_words) { should == t(:teens)[0] }
32
+ end
33
+
34
+ context '11 as lower example' do
35
+ subject { 11 }
36
+ its(:to_words) { should == t(:teens)[1] }
37
+ end
38
+
39
+ context '19 as upper example' do
40
+ subject { 19 }
41
+ its(:to_words) { should == t(:teens)[9] }
42
+ end
43
+ end
44
+
45
+ describe 'tens' do
46
+ context '20 as lower example' do
47
+ subject { 20 }
48
+ its(:to_words) { should == t(:tens)[2] }
49
+ end
50
+
51
+ context '21 as lower example with ones' do
52
+ subject { 21 }
53
+ its(:to_words) { should == [t(:tens)[2], t(:ones_male)[1]].join(' ') }
54
+ end
55
+
56
+ context '90 as upper example' do
57
+ subject { 90 }
58
+ its(:to_words) { should == t(:tens)[9] }
59
+ end
60
+
61
+ context '99 as upper example with ones' do
62
+ subject { 99 }
63
+ its(:to_words) { should == [t(:tens)[9], t(:ones_male)[9]].join(' ') }
64
+ end
65
+ end
66
+
67
+ describe 'hundreds' do
68
+ context '100 as lower example' do
69
+ subject { 100 }
70
+ its(:to_words) { should == t(:hundreds)[1] }
71
+ end
72
+
73
+ context '101 as lower example with ones' do
74
+ subject { 101 }
75
+ its(:to_words) { should == [t(:hundreds)[1], t(:ones_male)[1]].join(' ') }
76
+ end
77
+
78
+ context '111 as lower example with teens' do
79
+ subject { 111 }
80
+ its(:to_words) { should == [t(:hundreds)[1], t(:teens)[1]].join(' ') }
81
+ end
82
+
83
+ context '120 as lower example with tens' do
84
+ subject { 120 }
85
+ its(:to_words) { should == [t(:hundreds)[1], t(:tens)[2]].join(' ') }
86
+ end
87
+
88
+ context '121 as lower example with tens and ones' do
89
+ subject { 121 }
90
+
91
+ its(:to_words) { should == [
92
+ t(:hundreds)[1],
93
+ t(:tens)[2],
94
+ t(:ones_male)[1]
95
+ ].join(' ') }
96
+ end
97
+
98
+ context '900 as upper example' do
99
+ subject { 900 }
100
+ its(:to_words) { should == t(:hundreds)[9] }
101
+ end
102
+
103
+ context '909 as upper example with ones' do
104
+ subject { 909 }
105
+ its(:to_words) { should == [t(:hundreds)[9], t(:ones_male)[9]].join(' ') }
106
+ end
107
+
108
+ context '919 as upper example with teens' do
109
+ subject { 919 }
110
+ its(:to_words) { should == [t(:hundreds)[9], t(:teens)[9]].join(' ') }
111
+ end
112
+
113
+ context '990 as upper example with tens' do
114
+ subject { 990 }
115
+ its(:to_words) { should == [t(:hundreds)[9], t(:tens)[9]].join(' ') }
116
+ end
117
+
118
+ context '999 as upper example with tens and ones' do
119
+ subject { 999 }
120
+
121
+ its(:to_words) { should == [t(:hundreds)[9], t(:tens)[9], t(:ones_male)[9]].
122
+ join(' ') }
123
+ end
124
+ end
125
+
126
+ describe 'thousands' do
127
+ describe 'one' do
128
+ context '1000 as uniq example' do
129
+ subject { 1000 }
130
+
131
+ its(:to_words) { should == [t(:ones_female)[1], t(:thousands, :count => 1)].
132
+ join(' ') }
133
+ end
134
+
135
+ describe 'few' do
136
+ context '2000 as lower example' do
137
+ subject { 2000 }
138
+
139
+ its(:to_words) { should == [t(:ones_female)[2], t(:thousands, :count => 2)].
140
+ join(' ') }
141
+ end
142
+
143
+ context '4000 as upper example' do
144
+ subject { 4000 }
145
+
146
+ its(:to_words) { should == [t(:ones_female)[4], t(:thousands, :count => 4)].
147
+ join(' ') }
148
+ end
149
+ end
150
+
151
+ describe 'many' do
152
+ context '5000 as lower example' do
153
+ subject { 5000 }
154
+
155
+ its(:to_words) { should == [t(:ones_female)[5], t(:thousands, :count => 5)].
156
+ join(' ') }
157
+ end
158
+
159
+ context '999000 as upper example' do
160
+ subject { 999000 }
161
+
162
+ its(:to_words) { should == [t(:hundreds)[9],
163
+ t(:tens)[9],
164
+ t(:ones_female)[9],
165
+ t(:thousands, :count => 999)
166
+ ].join(' ') }
167
+ end
168
+ end
169
+
170
+ describe 'custom' do
171
+ context '999999 as example with first capacity' do
172
+ subject { 999999 }
173
+
174
+ its(:to_words) { should == [t(:hundreds)[9],
175
+ t(:tens)[9],
176
+ t(:ones_female)[9],
177
+ t(:thousands, :count => 999),
178
+ t(:hundreds)[9],
179
+ t(:tens)[9],
180
+ t(:ones_male)[9],
181
+ ].join(' ') }
182
+ end
183
+ end
184
+ end
185
+ end
186
+
187
+ describe 'millions' do
188
+ describe 'one' do
189
+ context '1000000 as uniq example' do
190
+ subject { 1000000 }
191
+
192
+ its(:to_words) { should == [t(:ones_male)[1], t(:millions, :count => 1)].
193
+ join(' ') }
194
+ end
195
+ end
196
+
197
+ context 'few' do
198
+ context '2000000 as lower example in few' do
199
+ subject { 2000000 }
200
+
201
+ its(:to_words) { should == [t(:ones_male)[2], t(:millions, :count => 2)].
202
+ join(' ') }
203
+ end
204
+
205
+ context '4000000 as upper example in few' do
206
+ subject { 4000000 }
207
+
208
+ its(:to_words) { should == [t(:ones_male)[4], t(:millions, :count => 4)].
209
+ join(' ') }
210
+ end
211
+ end
212
+
213
+ context 'many' do
214
+ context '5000000 as lower example in many' do
215
+ subject { 5000000 }
216
+
217
+ its(:to_words) { should == [t(:ones_male)[5], t(:millions, :count => 5)].
218
+ join(' ') }
219
+ end
220
+
221
+ context '99900000 as upper example' do
222
+ subject { 999000000 }
223
+
224
+ its(:to_words) { should == [t(:hundreds)[9],
225
+ t(:tens)[9],
226
+ t(:ones_male)[9],
227
+ t(:millions, :count => 999)
228
+ ].join(' ') }
229
+ end
230
+ end
231
+
232
+ context 'custom' do
233
+ context '999000999 as example with first capacity' do
234
+ subject { 999000999 }
235
+
236
+ its(:to_words) { should == [t(:hundreds)[9],
237
+ t(:tens)[9],
238
+ t(:ones_male)[9],
239
+ t(:millions, :count => 999),
240
+ t(:hundreds)[9],
241
+ t(:tens)[9],
242
+ t(:ones_male)[9],
243
+ ].join(' ') }
244
+ end
245
+
246
+ context '999999000 as example with second capacity' do
247
+ subject { 999999000 }
248
+
249
+ its(:to_words) { should == [t(:hundreds)[9],
250
+ t(:tens)[9],
251
+ t(:ones_male)[9],
252
+ t(:millions, :count => 999),
253
+ t(:hundreds)[9],
254
+ t(:tens)[9],
255
+ t(:ones_female)[9],
256
+ t(:thousands, :count => 999),
257
+ ].join(' ') }
258
+ end
259
+
260
+ context '999999999 as example with first and second capacity' do
261
+ subject { 999999999 }
262
+
263
+ its(:to_words) { should == [t(:hundreds)[9],
264
+ t(:tens)[9],
265
+ t(:ones_male)[9],
266
+ t(:millions, :count => 999),
267
+ t(:hundreds)[9],
268
+ t(:tens)[9],
269
+ t(:ones_female)[9],
270
+ t(:thousands, :count => 999),
271
+ t(:hundreds)[9],
272
+ t(:tens)[9],
273
+ t(:ones_male)[9],
274
+ ].join(' ') }
275
+ end
276
+ end
277
+ end
278
+ end
279
+ end
@@ -0,0 +1,8 @@
1
+ $TESTING=true
2
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
3
+
4
+ require 'number_to_words_ru'
5
+
6
+ RSpec.configure do
7
+ include TranslationsHelpers::Base
8
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: number_to_words_ru
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kirill Lazarev
9
+ autorequire: number_to_words_ru
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-24 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: Simple convert number to russian words using I18N.
15
+ email: k.s.lazarev@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/locales/numbers.en.yml
21
+ - lib/locales/numbers.ru.yml
22
+ - lib/locales/plurals.rb
23
+ - lib/number_to_words_ru/array_additions/helpers.rb
24
+ - lib/number_to_words_ru/array_additions/validations.rb
25
+ - lib/number_to_words_ru/array_additions.rb
26
+ - lib/number_to_words_ru/core_ext/array.rb
27
+ - lib/number_to_words_ru/core_ext/integer.rb
28
+ - lib/number_to_words_ru/figures_array.rb
29
+ - lib/number_to_words_ru/pluralization.rb
30
+ - lib/number_to_words_ru/strategies/base.rb
31
+ - lib/number_to_words_ru/strategies/en.rb
32
+ - lib/number_to_words_ru/strategies/ru.rb
33
+ - lib/number_to_words_ru/strategies.rb
34
+ - lib/number_to_words_ru/translations_helpers/base.rb
35
+ - lib/number_to_words_ru/translations_helpers/en.rb
36
+ - lib/number_to_words_ru/translations_helpers/ru.rb
37
+ - lib/number_to_words_ru/translations_helpers.rb
38
+ - lib/number_to_words_ru.rb
39
+ - spec/number_to_words_ru/array/ru_spec.rb
40
+ - spec/number_to_words_ru/integer/ru_spec.rb
41
+ - spec/spec_helper.rb
42
+ homepage: http://github.com/kslazarev/number_to_words_ru
43
+ licenses:
44
+ - MIT
45
+ post_install_message:
46
+ rdoc_options: []
47
+ require_paths:
48
+ - lib
49
+ required_ruby_version: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ segments:
56
+ - 0
57
+ hash: -3335539547606838716
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ requirements: []
65
+ rubyforge_project:
66
+ rubygems_version: 1.8.11
67
+ signing_key:
68
+ specification_version: 3
69
+ summary: Simple convert number to russian words using I18N.
70
+ test_files: []