number_to_words_ru 0.2.3 → 0.3.0.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/LICENSE.txt +20 -0
- data/README.rdoc +68 -0
- data/lib/initializers/i18n.rb +1 -1
- data/lib/locales/numbers.en.yml +2 -3
- data/lib/locales/plurals.rb +24 -16
- data/lib/numbers_and_words/array_additions/helpers.rb +50 -0
- data/lib/numbers_and_words/array_additions/validations.rb +9 -0
- data/lib/numbers_and_words/array_additions.rb +2 -0
- data/lib/numbers_and_words/core_ext/array.rb +9 -0
- data/lib/numbers_and_words/core_ext/integer.rb +12 -0
- data/lib/numbers_and_words/figures_array.rb +15 -0
- data/lib/{number_to_words_ru → numbers_and_words}/pluralization.rb +0 -0
- data/lib/numbers_and_words/strategies/base.rb +11 -0
- data/lib/numbers_and_words/strategies/en.rb +71 -0
- data/lib/numbers_and_words/strategies/ru.rb +71 -0
- data/lib/numbers_and_words/strategies.rb +3 -0
- data/lib/numbers_and_words/translations_helpers/base.rb +11 -0
- data/lib/numbers_and_words/translations_helpers/en.rb +41 -0
- data/lib/numbers_and_words/translations_helpers/ru.rb +41 -0
- data/lib/numbers_and_words/translations_helpers.rb +3 -0
- data/lib/numbers_and_words/version.rb +3 -0
- data/lib/numbers_and_words.rb +30 -0
- metadata +96 -31
- data/lib/number_to_words_ru/array_additions/helpers.rb +0 -48
- data/lib/number_to_words_ru/array_additions/validations.rb +0 -7
- data/lib/number_to_words_ru/array_additions.rb +0 -2
- data/lib/number_to_words_ru/core_ext/array.rb +0 -5
- data/lib/number_to_words_ru/core_ext/integer.rb +0 -11
- data/lib/number_to_words_ru/figures_array.rb +0 -9
- data/lib/number_to_words_ru/strategies/base.rb +0 -10
- data/lib/number_to_words_ru/strategies/en.rb +0 -69
- data/lib/number_to_words_ru/strategies/ru.rb +0 -69
- data/lib/number_to_words_ru/strategies.rb +0 -3
- data/lib/number_to_words_ru/translations_helpers/base.rb +0 -9
- data/lib/number_to_words_ru/translations_helpers/en.rb +0 -37
- data/lib/number_to_words_ru/translations_helpers/ru.rb +0 -37
- data/lib/number_to_words_ru/translations_helpers.rb +0 -3
- data/lib/number_to_words_ru.rb +0 -26
- data/spec/number_to_words_ru/array/ru_spec.rb +0 -27
- data/spec/number_to_words_ru/integer/ru_spec.rb +0 -293
- data/spec/spec_helper.rb +0 -8
metadata
CHANGED
@@ -1,46 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: number_to_words_ru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kirill Lazarev
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
14
|
-
|
12
|
+
date: 2012-03-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: i18n
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: activesupport
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
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
|
47
|
+
name: rake
|
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'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: jeweler
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
description: ! '#DEPRECATED. Use ''numbers_and_words'' instead. Convert numbers to
|
79
|
+
words using I18N.'
|
15
80
|
email: k.s.lazarev@gmail.com
|
16
81
|
executables: []
|
17
82
|
extensions: []
|
18
|
-
extra_rdoc_files:
|
83
|
+
extra_rdoc_files:
|
84
|
+
- LICENSE.txt
|
85
|
+
- README.rdoc
|
19
86
|
files:
|
20
87
|
- lib/initializers/i18n.rb
|
21
88
|
- lib/locales/numbers.en.yml
|
22
89
|
- lib/locales/numbers.ru.yml
|
23
90
|
- lib/locales/plurals.rb
|
24
|
-
- lib/
|
25
|
-
- lib/
|
26
|
-
- lib/
|
27
|
-
- lib/
|
28
|
-
- lib/
|
29
|
-
- lib/
|
30
|
-
- lib/
|
31
|
-
- lib/
|
32
|
-
- lib/
|
33
|
-
- lib/
|
34
|
-
- lib/
|
35
|
-
- lib/
|
36
|
-
- lib/
|
37
|
-
- lib/
|
38
|
-
- lib/
|
39
|
-
- lib/
|
40
|
-
-
|
41
|
-
-
|
42
|
-
-
|
43
|
-
homepage: http://github.com/kslazarev/
|
91
|
+
- lib/numbers_and_words.rb
|
92
|
+
- lib/numbers_and_words/array_additions.rb
|
93
|
+
- lib/numbers_and_words/array_additions/helpers.rb
|
94
|
+
- lib/numbers_and_words/array_additions/validations.rb
|
95
|
+
- lib/numbers_and_words/core_ext/array.rb
|
96
|
+
- lib/numbers_and_words/core_ext/integer.rb
|
97
|
+
- lib/numbers_and_words/figures_array.rb
|
98
|
+
- lib/numbers_and_words/pluralization.rb
|
99
|
+
- lib/numbers_and_words/strategies.rb
|
100
|
+
- lib/numbers_and_words/strategies/base.rb
|
101
|
+
- lib/numbers_and_words/strategies/en.rb
|
102
|
+
- lib/numbers_and_words/strategies/ru.rb
|
103
|
+
- lib/numbers_and_words/translations_helpers.rb
|
104
|
+
- lib/numbers_and_words/translations_helpers/base.rb
|
105
|
+
- lib/numbers_and_words/translations_helpers/en.rb
|
106
|
+
- lib/numbers_and_words/translations_helpers/ru.rb
|
107
|
+
- lib/numbers_and_words/version.rb
|
108
|
+
- LICENSE.txt
|
109
|
+
- README.rdoc
|
110
|
+
homepage: http://github.com/kslazarev/numbers_and_words
|
44
111
|
licenses:
|
45
112
|
- MIT
|
46
113
|
post_install_message:
|
@@ -53,9 +120,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
53
120
|
- - ! '>='
|
54
121
|
- !ruby/object:Gem::Version
|
55
122
|
version: '0'
|
56
|
-
segments:
|
57
|
-
- 0
|
58
|
-
hash: 1036402517106089977
|
59
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
60
124
|
none: false
|
61
125
|
requirements:
|
@@ -64,8 +128,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
128
|
version: '0'
|
65
129
|
requirements: []
|
66
130
|
rubyforge_project:
|
67
|
-
rubygems_version: 1.8.
|
131
|
+
rubygems_version: 1.8.21
|
68
132
|
signing_key:
|
69
133
|
specification_version: 3
|
70
|
-
summary:
|
134
|
+
summary: ! '#DEPRECATED. Use ''numbers_and_words'' instead. Convert numbers to words
|
135
|
+
using I18N.'
|
71
136
|
test_files: []
|
@@ -1,48 +0,0 @@
|
|
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 number_for_gender capacity
|
19
|
-
figures = figures_array_in_capacity(capacity)
|
20
|
-
teens = figures.teens
|
21
|
-
teens ? teens.join.to_i : figures.first
|
22
|
-
end
|
23
|
-
|
24
|
-
def is_a_thousand_capacity? capacity
|
25
|
-
THOUSAND_CAPACITY == capacity
|
26
|
-
end
|
27
|
-
|
28
|
-
def ones
|
29
|
-
self[0] if 0 < self[0].to_i
|
30
|
-
end
|
31
|
-
|
32
|
-
def teens
|
33
|
-
tens_with_ones if 1 == tens
|
34
|
-
end
|
35
|
-
|
36
|
-
def tens
|
37
|
-
self[1] if self[1] and 0 < self[1].to_i
|
38
|
-
end
|
39
|
-
|
40
|
-
def tens_with_ones
|
41
|
-
[ones, tens] if ones and tens
|
42
|
-
end
|
43
|
-
|
44
|
-
def hundreds
|
45
|
-
self[2] if 0 < self[2].to_i
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,69 +0,0 @@
|
|
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
|
-
unless 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
|
@@ -1,69 +0,0 @@
|
|
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
|
-
unless number_in_capacity_by_words.empty?
|
35
|
-
if 0 < capacity
|
36
|
-
words.push translation_megs(capacity, figures.number_for_gender(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
|
@@ -1,37 +0,0 @@
|
|
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
|
@@ -1,37 +0,0 @@
|
|
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
|
data/lib/number_to_words_ru.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'i18n'
|
3
|
-
require 'initializers/i18n'
|
4
|
-
require 'active_support/inflector'
|
5
|
-
|
6
|
-
require 'number_to_words_ru/translations_helpers'
|
7
|
-
require 'number_to_words_ru/strategies'
|
8
|
-
require 'number_to_words_ru/array_additions'
|
9
|
-
require 'number_to_words_ru/figures_array'
|
10
|
-
|
11
|
-
require 'number_to_words_ru/core_ext/integer'
|
12
|
-
require 'number_to_words_ru/core_ext/array'
|
13
|
-
|
14
|
-
module I18nInitialization
|
15
|
-
extend self
|
16
|
-
|
17
|
-
def init
|
18
|
-
I18n.load_path << locale_files
|
19
|
-
end
|
20
|
-
|
21
|
-
def locale_files
|
22
|
-
Dir[File.join(File.dirname(__FILE__), 'locales', '**/*')]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
I18nInitialization.init
|
@@ -1,27 +0,0 @@
|
|
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
|