numbers_and_words 0.3.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.
- data/LICENSE.txt +20 -0
- data/README.rdoc +68 -0
- data/lib/initializers/i18n.rb +2 -0
- data/lib/locales/numbers.en.yml +7 -0
- data/lib/locales/numbers.ru.yml +52 -0
- data/lib/locales/plurals.rb +30 -0
- data/lib/numbers_and_words.rb +30 -0
- data/lib/numbers_and_words/array_additions.rb +2 -0
- 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/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/numbers_and_words/pluralization.rb +2 -0
- data/lib/numbers_and_words/strategies.rb +3 -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/translations_helpers.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/version.rb +3 -0
- metadata +150 -0
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011-2012 Kirill Lazarev
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
== numbers_and_words {<img src="https://secure.travis-ci.org/kslazarev/numbers_and_words.png" />}[http://travis-ci.org/kslazarev/numbers_and_words]
|
2
|
+
|
3
|
+
Convert numbers to words using the I18n library.
|
4
|
+
|
5
|
+
Перевод чисел в слова при помощи библиотеки I18n.
|
6
|
+
|
7
|
+
== Supported Languages / Языки
|
8
|
+
|
9
|
+
* English
|
10
|
+
* Русский
|
11
|
+
|
12
|
+
== Examples / Примеры
|
13
|
+
|
14
|
+
I18n.with_locale(:en) { 42.to_words }
|
15
|
+
=> "forty-two"
|
16
|
+
|
17
|
+
I18n.with_locale(:ru) { 42.to_words }
|
18
|
+
=> "сорок два"
|
19
|
+
|
20
|
+
21.to_words
|
21
|
+
=> "twenty-one"
|
22
|
+
=> "двадцать один"
|
23
|
+
|
24
|
+
231.to_words
|
25
|
+
=> "two hundred thirty-one"
|
26
|
+
=> "двести тридцать один"
|
27
|
+
|
28
|
+
4030.to_words
|
29
|
+
=> "four thousand thirty"
|
30
|
+
=> "четыре тысячи тридцать"
|
31
|
+
|
32
|
+
1000100.to_words
|
33
|
+
=> "one million one hundred"
|
34
|
+
=> "один миллион сто"
|
35
|
+
|
36
|
+
1000000000000000000000000000000000.to_words
|
37
|
+
=> "one decillion"
|
38
|
+
=> "один дециллион"
|
39
|
+
|
40
|
+
[1, 2, 3].to_words
|
41
|
+
=> ["one", "two", "three"]
|
42
|
+
=> ["один", "два", "три"]
|
43
|
+
|
44
|
+
[11, 22, 133].to_words
|
45
|
+
=> ["eleven", "twenty-two", "one hundred thirty-three"]
|
46
|
+
=> ["одиннадцать", "двадцать два", "сто тридцать три"]
|
47
|
+
|
48
|
+
== Requirements / Требования
|
49
|
+
|
50
|
+
* 1.8.7 <= Ruby (compatible with/совместимость с Ruby 1.9, JRuby and/и Rubinius);
|
51
|
+
* 0.5.0 <= I18n (earlier versions not tested/ранние версии не тестировались);
|
52
|
+
|
53
|
+
== Installation / Установка
|
54
|
+
|
55
|
+
gem install numbers_and_words
|
56
|
+
|
57
|
+
== License / Лицензия
|
58
|
+
|
59
|
+
MIT License
|
60
|
+
|
61
|
+
== Bugs and Language Support / Поправки и Новые Языки
|
62
|
+
|
63
|
+
Fork the project. Make your feature addition or bug fix with tests. Send a pull request. Bonus points for topic branches.
|
64
|
+
|
65
|
+
== Contacts / Контакты
|
66
|
+
|
67
|
+
* Kirill Lazarev (mailto:k.s.lazarev@gmail.com)
|
68
|
+
* Daniel Doubrovkine (link:http://github.com/dblock)
|
@@ -0,0 +1,7 @@
|
|
1
|
+
en:
|
2
|
+
numbers:
|
3
|
+
ones: [zero, one, two, three, four, five, six, seven, eight, nine]
|
4
|
+
teens: [ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen]
|
5
|
+
tens: [zero, ten, twenty, thirty, forty, fifty, sixty, seventy, nought, ninety]
|
6
|
+
hundreds: hundred
|
7
|
+
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,30 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Locales
|
3
|
+
module Plurals
|
4
|
+
|
5
|
+
RU = lambda do |count|
|
6
|
+
case count
|
7
|
+
when Integer
|
8
|
+
case
|
9
|
+
when 1 == count
|
10
|
+
:one
|
11
|
+
when (2..4).include?(count)
|
12
|
+
:few
|
13
|
+
else
|
14
|
+
:many
|
15
|
+
end
|
16
|
+
else
|
17
|
+
:other
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
EN = lambda { |count| 1 == count ? :one : :other }
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
{
|
28
|
+
:ru => {:i18n => {:plural => {:rule => NumbersAndWords::Locales::Plurals::RU}}},
|
29
|
+
:en => {:i18n => {:plural => {:rule => NumbersAndWords::Locales::Plurals::EN}}}
|
30
|
+
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'i18n'
|
3
|
+
require 'initializers/i18n'
|
4
|
+
require 'active_support/inflector'
|
5
|
+
|
6
|
+
require 'numbers_and_words/version'
|
7
|
+
|
8
|
+
require 'numbers_and_words/translations_helpers'
|
9
|
+
require 'numbers_and_words/strategies'
|
10
|
+
require 'numbers_and_words/array_additions'
|
11
|
+
require 'numbers_and_words/figures_array'
|
12
|
+
|
13
|
+
require 'numbers_and_words/core_ext/integer'
|
14
|
+
require 'numbers_and_words/core_ext/array'
|
15
|
+
|
16
|
+
module NumbersAndWords
|
17
|
+
module I18nInitialization
|
18
|
+
extend self
|
19
|
+
|
20
|
+
def init
|
21
|
+
locale_files.each { |locale_file| I18n.load_path << locale_file }
|
22
|
+
end
|
23
|
+
|
24
|
+
def locale_files
|
25
|
+
Dir[File.join(File.dirname(__FILE__), 'locales', '**/*')]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
NumbersAndWords::I18nInitialization.init
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module ArrayAdditions
|
3
|
+
module Helpers
|
4
|
+
THOUSAND_CAPACITY = 1
|
5
|
+
|
6
|
+
def capacity_count
|
7
|
+
count = (self.length.to_f / 3).ceil
|
8
|
+
1 == count ? nil : count
|
9
|
+
end
|
10
|
+
|
11
|
+
def figures_array_in_capacity capacity
|
12
|
+
self[capacity * 3, 3]
|
13
|
+
end
|
14
|
+
|
15
|
+
def number_in_capacity capacity
|
16
|
+
figures_array_in_capacity(capacity).reverse.join.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def number_for_gender capacity
|
20
|
+
figures = figures_array_in_capacity(capacity)
|
21
|
+
teens = figures.teens
|
22
|
+
teens ? teens.join.to_i : figures.first
|
23
|
+
end
|
24
|
+
|
25
|
+
def is_a_thousand_capacity? capacity
|
26
|
+
THOUSAND_CAPACITY == capacity
|
27
|
+
end
|
28
|
+
|
29
|
+
def ones
|
30
|
+
self[0] if 0 < self[0].to_i
|
31
|
+
end
|
32
|
+
|
33
|
+
def teens
|
34
|
+
tens_with_ones if 1 == tens
|
35
|
+
end
|
36
|
+
|
37
|
+
def tens
|
38
|
+
self[1] if self[1] and 0 < self[1].to_i
|
39
|
+
end
|
40
|
+
|
41
|
+
def tens_with_ones
|
42
|
+
[ones, tens] if ones and tens
|
43
|
+
end
|
44
|
+
|
45
|
+
def hundreds
|
46
|
+
self[2] if 0 < self[2].to_i
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
class FiguresArray < Array
|
3
|
+
include NumbersAndWords::ArrayAdditions::Helpers
|
4
|
+
include NumbersAndWords::ArrayAdditions::Validations
|
5
|
+
|
6
|
+
def to_words strategy, options = nil
|
7
|
+
validate_figure_array!
|
8
|
+
strategy.convert self
|
9
|
+
end
|
10
|
+
|
11
|
+
def reverse
|
12
|
+
super.to_figures
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
class En < Base
|
4
|
+
include NumbersAndWords::TranslationsHelpers::En
|
5
|
+
|
6
|
+
attr_accessor :figures_in_previous_capacity
|
7
|
+
|
8
|
+
def convert figures
|
9
|
+
@figures = figures.reverse
|
10
|
+
|
11
|
+
@words = strings
|
12
|
+
@words.empty? ? zero : @words.reverse.join(' ')
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def strings
|
18
|
+
if figures.capacity_count
|
19
|
+
complex_to_words
|
20
|
+
elsif figures.hundreds
|
21
|
+
simple_hundreds_to_words
|
22
|
+
elsif figures.tens or figures.ones
|
23
|
+
simple_to_words
|
24
|
+
else
|
25
|
+
[]
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def complex_to_words
|
30
|
+
words = []
|
31
|
+
figures.capacity_count.times do |capacity|
|
32
|
+
number_in_capacity_by_words = save_parent_figures do |parent_figures|
|
33
|
+
@figures = parent_figures.figures_array_in_capacity(capacity)
|
34
|
+
strings
|
35
|
+
end
|
36
|
+
|
37
|
+
unless number_in_capacity_by_words.empty?
|
38
|
+
words.push translation_megs(capacity) if 0 < capacity
|
39
|
+
words += number_in_capacity_by_words
|
40
|
+
end
|
41
|
+
end
|
42
|
+
words
|
43
|
+
end
|
44
|
+
|
45
|
+
def simple_hundreds_to_words
|
46
|
+
simple_to_words + [translation_hundreds(figures.hundreds)]
|
47
|
+
end
|
48
|
+
|
49
|
+
def simple_to_words
|
50
|
+
if figures.teens
|
51
|
+
[translation_teens(figures.ones)]
|
52
|
+
elsif figures.tens
|
53
|
+
figures.ones ?
|
54
|
+
[translation_tens_with_ones(figures.tens_with_ones)] :
|
55
|
+
[translation_tens(figures.tens)]
|
56
|
+
elsif figures.ones
|
57
|
+
[translation_ones(figures.ones)]
|
58
|
+
else
|
59
|
+
[]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def save_parent_figures
|
64
|
+
parent_figures = @figures
|
65
|
+
result = yield(parent_figures)
|
66
|
+
@figures = parent_figures
|
67
|
+
result
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
class Ru < Base
|
4
|
+
include NumbersAndWords::TranslationsHelpers::Ru
|
5
|
+
|
6
|
+
def convert figures
|
7
|
+
@figures = figures.reverse
|
8
|
+
@words = strings
|
9
|
+
|
10
|
+
@words.empty? ? zero : @words.reverse.join(' ')
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def strings gender = :male
|
16
|
+
if figures.capacity_count
|
17
|
+
complex_to_words
|
18
|
+
elsif figures.hundreds
|
19
|
+
simple_hundreds_to_words gender
|
20
|
+
elsif figures.tens or figures.ones
|
21
|
+
simple_to_words gender
|
22
|
+
else
|
23
|
+
[]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def complex_to_words
|
28
|
+
words = []
|
29
|
+
figures.capacity_count.times do |capacity|
|
30
|
+
number_in_capacity_by_words = save_parent_figures do
|
31
|
+
@figures = figures.figures_array_in_capacity(capacity)
|
32
|
+
strings figures.is_a_thousand_capacity?(capacity) ? :female : :male
|
33
|
+
end
|
34
|
+
|
35
|
+
unless number_in_capacity_by_words.empty?
|
36
|
+
if 0 < capacity
|
37
|
+
words.push translation_megs(capacity, figures.number_for_gender(capacity))
|
38
|
+
end
|
39
|
+
words += number_in_capacity_by_words
|
40
|
+
end
|
41
|
+
end
|
42
|
+
words
|
43
|
+
end
|
44
|
+
|
45
|
+
def simple_hundreds_to_words gender
|
46
|
+
simple_to_words(gender) + [translation_hundreds(figures.hundreds)]
|
47
|
+
end
|
48
|
+
|
49
|
+
def simple_to_words gender
|
50
|
+
if figures.teens
|
51
|
+
[translation_teens(figures.ones)]
|
52
|
+
elsif figures.tens
|
53
|
+
figures.ones ?
|
54
|
+
[translation_tens_with_ones(figures.tens_with_ones, gender)] :
|
55
|
+
[translation_tens(figures.tens)]
|
56
|
+
elsif figures.ones
|
57
|
+
[translation_ones(figures.ones, gender)]
|
58
|
+
else
|
59
|
+
[]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def save_parent_figures
|
64
|
+
parent_figures = @figures
|
65
|
+
result = yield
|
66
|
+
@figures = parent_figures
|
67
|
+
result
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module TranslationsHelpers
|
3
|
+
module En
|
4
|
+
include NumbersAndWords::TranslationsHelpers::Base
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
def translation_teens number
|
9
|
+
t(:teens)[number]
|
10
|
+
end
|
11
|
+
|
12
|
+
def translation_tens number
|
13
|
+
t(:tens)[number]
|
14
|
+
end
|
15
|
+
|
16
|
+
def translation_ones number
|
17
|
+
t(:ones)[number]
|
18
|
+
end
|
19
|
+
|
20
|
+
def translation_tens_with_ones numbers
|
21
|
+
[translation_tens(numbers[1]), translation_ones(numbers[0])].join '-'
|
22
|
+
end
|
23
|
+
|
24
|
+
def translation_union
|
25
|
+
t :union
|
26
|
+
end
|
27
|
+
|
28
|
+
def translation_hundreds number
|
29
|
+
[t(:ones)[number], t(:hundreds)].join ' '
|
30
|
+
end
|
31
|
+
|
32
|
+
def translation_megs capacity
|
33
|
+
t(:mega)[capacity]
|
34
|
+
end
|
35
|
+
|
36
|
+
def zero
|
37
|
+
t(:ones)[0]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module TranslationsHelpers
|
3
|
+
module Ru
|
4
|
+
include NumbersAndWords::TranslationsHelpers::Base
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
def translation_megs capacity, number
|
9
|
+
t translation_mega(capacity), :count => number
|
10
|
+
end
|
11
|
+
|
12
|
+
def translation_teens number
|
13
|
+
t(:teens)[number]
|
14
|
+
end
|
15
|
+
|
16
|
+
def translation_tens number
|
17
|
+
t(:tens)[number]
|
18
|
+
end
|
19
|
+
|
20
|
+
def translation_ones number, gender
|
21
|
+
t([:ones, gender].join('_'))[number]
|
22
|
+
end
|
23
|
+
|
24
|
+
def translation_tens_with_ones numbers, gender
|
25
|
+
[translation_tens(numbers[1]), translation_ones(numbers[0], gender)].join ' '
|
26
|
+
end
|
27
|
+
|
28
|
+
def translation_hundreds number
|
29
|
+
t(:hundreds)[number]
|
30
|
+
end
|
31
|
+
|
32
|
+
def translation_mega capacity
|
33
|
+
t(:mega)[capacity]
|
34
|
+
end
|
35
|
+
|
36
|
+
def zero
|
37
|
+
t(:ones_male)[0]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: numbers_and_words
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kirill Lazarev
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-03-22 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: bundler
|
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: rake
|
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
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: jeweler
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
description: Convert numbers to words using I18N.
|
95
|
+
email: k.s.lazarev@gmail.com
|
96
|
+
executables: []
|
97
|
+
extensions: []
|
98
|
+
extra_rdoc_files:
|
99
|
+
- LICENSE.txt
|
100
|
+
- README.rdoc
|
101
|
+
files:
|
102
|
+
- lib/initializers/i18n.rb
|
103
|
+
- lib/locales/numbers.en.yml
|
104
|
+
- lib/locales/numbers.ru.yml
|
105
|
+
- lib/locales/plurals.rb
|
106
|
+
- lib/numbers_and_words.rb
|
107
|
+
- lib/numbers_and_words/array_additions.rb
|
108
|
+
- lib/numbers_and_words/array_additions/helpers.rb
|
109
|
+
- lib/numbers_and_words/array_additions/validations.rb
|
110
|
+
- lib/numbers_and_words/core_ext/array.rb
|
111
|
+
- lib/numbers_and_words/core_ext/integer.rb
|
112
|
+
- lib/numbers_and_words/figures_array.rb
|
113
|
+
- lib/numbers_and_words/pluralization.rb
|
114
|
+
- lib/numbers_and_words/strategies.rb
|
115
|
+
- lib/numbers_and_words/strategies/base.rb
|
116
|
+
- lib/numbers_and_words/strategies/en.rb
|
117
|
+
- lib/numbers_and_words/strategies/ru.rb
|
118
|
+
- lib/numbers_and_words/translations_helpers.rb
|
119
|
+
- lib/numbers_and_words/translations_helpers/base.rb
|
120
|
+
- lib/numbers_and_words/translations_helpers/en.rb
|
121
|
+
- lib/numbers_and_words/translations_helpers/ru.rb
|
122
|
+
- lib/numbers_and_words/version.rb
|
123
|
+
- LICENSE.txt
|
124
|
+
- README.rdoc
|
125
|
+
homepage: http://github.com/kslazarev/numbers_and_words
|
126
|
+
licenses:
|
127
|
+
- MIT
|
128
|
+
post_install_message:
|
129
|
+
rdoc_options: []
|
130
|
+
require_paths:
|
131
|
+
- lib
|
132
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
+
none: false
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
138
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
140
|
+
requirements:
|
141
|
+
- - ! '>='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: '0'
|
144
|
+
requirements: []
|
145
|
+
rubyforge_project:
|
146
|
+
rubygems_version: 1.8.21
|
147
|
+
signing_key:
|
148
|
+
specification_version: 3
|
149
|
+
summary: Convert numbers to words using I18N.
|
150
|
+
test_files: []
|