numbers_and_words 0.10.5 → 0.10.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +23 -1
- data/lib/numbers_and_words/helper_classes/array_extensions/helpers.rb +13 -0
- data/lib/numbers_and_words/i18n/locales/numbers.es.yml +32 -5
- data/lib/numbers_and_words/i18n/locales/numbers.pt-BR.yml +92 -0
- data/lib/numbers_and_words/i18n/pluralization.rb +1 -0
- data/lib/numbers_and_words/i18n/plurals/plurals.rb +1 -1
- data/lib/numbers_and_words/i18n/plurals/pt_br.rb +15 -0
- data/lib/numbers_and_words/strategies/array_joiner/languages.rb +2 -1
- data/lib/numbers_and_words/strategies/array_joiner/languages/pt_br.rb +10 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators.rb +2 -1
- data/lib/numbers_and_words/strategies/figures_converter/decorators/pt_br.rb +3 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/pt_br/base.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/pt_br/fractional.rb +38 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/pt_br/integral.rb +29 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages.rb +1 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/es.rb +28 -19
- data/lib/numbers_and_words/strategies/figures_converter/languages/pt_br.rb +118 -0
- data/lib/numbers_and_words/strategies/figures_converter/options.rb +2 -1
- data/lib/numbers_and_words/strategies/figures_converter/options/en/remove_zero.rb +0 -1
- data/lib/numbers_and_words/strategies/figures_converter/options/pt_br.rb +3 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/pt_br/gender.rb +29 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/pt_br/ordinal.rb +26 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/pt_br/remove_zero.rb +28 -0
- data/lib/numbers_and_words/translations.rb +1 -0
- data/lib/numbers_and_words/translations/es.rb +14 -11
- data/lib/numbers_and_words/translations/families/latin.rb +0 -2
- data/lib/numbers_and_words/translations/pt_br.rb +77 -0
- data/lib/numbers_and_words/version.rb +1 -1
- data/lib/numbers_and_words/wrappers/float.rb +14 -2
- metadata +16 -5
- data/CHANGELOG.md +0 -167
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5caabcd62264f800eee755b1b4d9df3e26985c6e
|
4
|
+
data.tar.gz: dc3ed56b19454d61aa519ed095c2445574b2d8cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d764ecdce935eae9b0c7e43a510cb12ca620a25d1e57011aed3e0b1970151f72121785ea3565946cd3bf2896fdc60d376f4fdfb960b0051efd5cbee1edb1d80
|
7
|
+
data.tar.gz: 49cfe46d629393bf6737ee713b8ebb632d759bff5954afa6239c5154d5c9419919027a355586a8ab7c71ed13fb1d9477ffaa033fc85272ab7566c457afa25126
|
data/README.rdoc
CHANGED
@@ -16,6 +16,8 @@ Számok betűvel írva az I18n könyvtár segítségével.
|
|
16
16
|
|
17
17
|
I18n kütüphanesi ile sayıları yazıya çevirir.
|
18
18
|
|
19
|
+
Converte números em letras utilizando a biblioteca I18n.
|
20
|
+
|
19
21
|
== Supported Languages / Языки / Langues Supportées
|
20
22
|
|
21
23
|
* English [en]
|
@@ -34,6 +36,8 @@ I18n kütüphanesi ile sayıları yazıya çevirir.
|
|
34
36
|
* Nederlands** [nl]
|
35
37
|
* Swedish** [se]
|
36
38
|
* English (British)** [en-GB]
|
39
|
+
* Português [pt]
|
40
|
+
* Português Brasileiro [pt-BR]
|
37
41
|
|
38
42
|
** Experimental
|
39
43
|
|
@@ -90,12 +94,13 @@ I18n kütüphanesi ile sayıları yazıya çevirir.
|
|
90
94
|
=> "ventiuno"
|
91
95
|
=> "éénentwintig"
|
92
96
|
=> "tjugo-en"
|
97
|
+
=> "vinte e um"
|
93
98
|
|
94
99
|
231.to_words
|
95
100
|
=> "two hundred thirty-one"
|
96
101
|
=> "doscientos treinta y uno"
|
97
102
|
=> "двести тридцать один"
|
98
|
-
=> "deux cent trente
|
103
|
+
=> "deux cent trente et un"
|
99
104
|
=> "двiстi тридцять один"
|
100
105
|
=> "kettőszázharmincegy"
|
101
106
|
=> "du šimtai trisdešimt vienas"
|
@@ -107,6 +112,7 @@ I18n kütüphanesi ile sayıları yazıya çevirir.
|
|
107
112
|
=> "2 cento trentauno"
|
108
113
|
=> "tweehonderdéénendertig"
|
109
114
|
=> "två hundra trettio-en"
|
115
|
+
=> "duzentos e trinta e um"
|
110
116
|
|
111
117
|
4030.to_words
|
112
118
|
=> "four thousand thirty"
|
@@ -241,6 +247,22 @@ I18n kütüphanesi ile sayıları yazıya çevirir.
|
|
241
247
|
I18n.with_locale(:hu) { 21.to_words ordinal: true }
|
242
248
|
=> "huszonegyedik"
|
243
249
|
|
250
|
+
* Brazilian Portuguese
|
251
|
+
|
252
|
+
Change gender form: (gender: [:female || :male || :neuter])
|
253
|
+
|
254
|
+
I18n.with_locale(:'pt-BR') { 1000000001.to_words gender: :female }
|
255
|
+
=> "um bilhão e uma"
|
256
|
+
|
257
|
+
== Other options / Другие опции
|
258
|
+
|
259
|
+
* precision
|
260
|
+
|
261
|
+
You may pass argument :precision that added zeros to the end of float number:
|
262
|
+
|
263
|
+
I18n.with_locale(:ru) { 0.1.to_words precision: 3 }
|
264
|
+
=> ноль целых и десять сотых
|
265
|
+
|
244
266
|
== Requirements / Требования / Configuration Requise
|
245
267
|
|
246
268
|
* 1.9.3 <= Ruby (compatible with/совместимость с/compatible avec Ruby 1.9, JRuby and/и/et Rubinius);
|
@@ -23,6 +23,19 @@ module NumbersAndWords
|
|
23
23
|
figures_array_in_capacity(capacity).reverse.join.to_i
|
24
24
|
end
|
25
25
|
|
26
|
+
def number_under_capacity capacity
|
27
|
+
figures_array_under_capacity(capacity).reverse.join.to_i
|
28
|
+
end
|
29
|
+
|
30
|
+
def is_opaque? capacity
|
31
|
+
figures_under = figures_array_under_capacity(capacity)
|
32
|
+
figures_under.count(0) == figures_under.length
|
33
|
+
end
|
34
|
+
|
35
|
+
def figures_array_under_capacity capacity
|
36
|
+
self[0..(capacity * FIGURES_IN_CAPACITY) - ONES_SHIFT]
|
37
|
+
end
|
38
|
+
|
26
39
|
def ones
|
27
40
|
self[0].to_i if 0 < self[0].to_i
|
28
41
|
end
|
@@ -2,14 +2,41 @@ es:
|
|
2
2
|
numbers:
|
3
3
|
one: un
|
4
4
|
ones: [cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve]
|
5
|
+
one_twenties: ún
|
5
6
|
ones_twenties: [_, uno, dós, trés, cuatro, cinco, séis, siete, ocho, nueve]
|
6
|
-
|
7
7
|
teens: [diez, once, doce, trece, catorce, quince, dieciséis, diecisiete, dieciocho, diecinueve]
|
8
8
|
tens: [_, diez, veinti, treinta, cuarenta, cincuenta, sesenta, setenta, ochenta, noventa]
|
9
9
|
twenty: veinte
|
10
|
-
|
11
10
|
hundreds: [ciento, doscientos, trescientos, cuatrocientos, quinientos, seiscientos, setecientos, ochocientos, novecientos]
|
12
11
|
one_hundred: cien
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
mega: [_, thousand, million, billion, trillion, quadrillion, quintillion, sextillion, septillion, octillion, nonillion, decillion, undecillion, duodecillion, tredecillion, quattuordecillion]
|
13
|
+
thousand: mil
|
14
|
+
million:
|
15
|
+
one: millón
|
16
|
+
other: millones
|
17
|
+
billion: mil millones
|
18
|
+
trillion:
|
19
|
+
one: billón
|
20
|
+
other: billones
|
21
|
+
quadrillion: mil billones
|
22
|
+
quintillion:
|
23
|
+
one: trillón
|
24
|
+
other: trillones
|
25
|
+
sextillion: mil trillones
|
26
|
+
septillion:
|
27
|
+
one: cuatrillón
|
28
|
+
other: cuatrillones
|
29
|
+
octillion: mil cuatrillones
|
30
|
+
nonillion:
|
31
|
+
one: quintillón
|
32
|
+
other: quintillones
|
33
|
+
decillion: mil quintillones
|
34
|
+
undecillion:
|
35
|
+
one: sextillón
|
36
|
+
other: sextillones
|
37
|
+
duodecillion: mil sextillones
|
38
|
+
tredecillion:
|
39
|
+
one: septillón
|
40
|
+
other: septillones
|
41
|
+
quattuordecillion: mil septillones
|
42
|
+
union: y
|
@@ -0,0 +1,92 @@
|
|
1
|
+
pt-BR:
|
2
|
+
numbers:
|
3
|
+
union: e
|
4
|
+
union_separator: e
|
5
|
+
integral:
|
6
|
+
one: inteiro
|
7
|
+
other: inteiros
|
8
|
+
ones:
|
9
|
+
male: [zero, um, dois, três, quatro, cinco, seis, sete, oito, nove]
|
10
|
+
female: [zero, uma, duas, três, quatro, cinco, seis, sete, oito, nove]
|
11
|
+
ones_twenties: [zero, um, dois, três, quatro, cinco, seis, sete, oito, nove]
|
12
|
+
one: um
|
13
|
+
teens: [dez, onze, doze, treze, quatorze, quinze, dezesseis, dezessete, dezoito, dezenove]
|
14
|
+
tens: [zero, dez, vinte, trinta, quarenta, cinquenta, sessenta, setenta, oitenta, noventa]
|
15
|
+
hundreds:
|
16
|
+
male: [cento, duzentos, trezentos, quatrocentos, quinhentos, seiscentos, setecentos, oitocentos, novecentos]
|
17
|
+
female: [cento, duzentas, trezentas, quatrocentas, quinhentas, seiscentas, setecentas, oitocentas, novecentas]
|
18
|
+
one_hundred: cem
|
19
|
+
mega: [_, mil, milhão, bilhão, trilhão, quadrilhão, quintilhão, sextilhão, septilhão, octilhão, nonilhão, decilhão]
|
20
|
+
megas: [_, mil, milhões, bilhões, trilhões, quadrilhões, quintilhões, sextilhões, septilhões, octilhões, nonilhões, decilhões]
|
21
|
+
ordinal:
|
22
|
+
ones:
|
23
|
+
male: [zero, primeiro, segundo, terceiro, quarto, quinto, sexto, sétimo, oitavo, nono]
|
24
|
+
female: [zera, primeira, segunda, terceira, quarta, quinta, sexta, sétima, oitava, nona]
|
25
|
+
tens:
|
26
|
+
male: [_, décimo, vigésimo, trigésimo, quadragésimo, quinquagésimo, sexagésimo, septuagésimo, octogésimo, nonagésimo]
|
27
|
+
female: [_, décima, vigésima, trigésima, quadragésima, quinquagésima, sexagésima, septuagésima, octogésima, nonagésima]
|
28
|
+
hundreds:
|
29
|
+
male: [centésimo, ducentésimo, trecentésimo, quadringentésimo, quingentésimo, sexcentésimo, septingentésimo, octingentésimo, noningentésimo]
|
30
|
+
female: [centésima, ducentésima, trecentésima, quadringentésima, quingentésima, sexcentésima, septingentésima, octingentésima, noningentésima]
|
31
|
+
mega:
|
32
|
+
male: [_, milésimo, milionésimo, bilionésimo, trilionésimo, quadrilionésimo, sextilionésimo, septilionésimo, octilionésimo, nonilionésimo]
|
33
|
+
female: [_, milésima, milionésima, bilionésima, trilionésima, quadrilionésima, sextilionésima, septilionésima, octilionésima, nonilionésima]
|
34
|
+
micro: [_, tenths, hundredths, thousandths, millionths, billionths, trillionths, quadrillionths, quintillionths, sextillionths, septillionths, octillionths, nonillionths, decillionths, undecillionths, duodecillionths, tredecillionths, quattuordecillionths]
|
35
|
+
micro_prefix:
|
36
|
+
tens:
|
37
|
+
one: décimo
|
38
|
+
other: décimos
|
39
|
+
hundreds:
|
40
|
+
one: centésimo
|
41
|
+
other: centésimos
|
42
|
+
tenths:
|
43
|
+
one: décimo
|
44
|
+
other: décimos
|
45
|
+
hundredths:
|
46
|
+
one: centésimo
|
47
|
+
other: centésimos
|
48
|
+
thousandths:
|
49
|
+
one: milésimo
|
50
|
+
other: milésimos
|
51
|
+
millionths:
|
52
|
+
one: milionésimo
|
53
|
+
other: milionésimos
|
54
|
+
billionths:
|
55
|
+
one: bilionésimo
|
56
|
+
other: bilionésimos
|
57
|
+
trillionths:
|
58
|
+
one: trilionésimo
|
59
|
+
other: trilionésimo
|
60
|
+
quadrillionths:
|
61
|
+
one: quadrilionésimo
|
62
|
+
other: quadrilionésimos
|
63
|
+
quintillionths:
|
64
|
+
one: quintilionésimo
|
65
|
+
other: quintilionésimos
|
66
|
+
sextillionths:
|
67
|
+
one: sextilionésimo
|
68
|
+
other: sextilionésimos
|
69
|
+
septillionths:
|
70
|
+
one: septilionésimo
|
71
|
+
other: septilionésimos
|
72
|
+
octillionths:
|
73
|
+
one: octilionésimo
|
74
|
+
other: octilionésimos
|
75
|
+
nonillionths:
|
76
|
+
one: nonilionésimo
|
77
|
+
other: nonilionésimos
|
78
|
+
decillionths:
|
79
|
+
one: decilionésimo
|
80
|
+
other: decilionésimos
|
81
|
+
undecillionths:
|
82
|
+
one: undecilionésimo
|
83
|
+
other: undecilionésimos
|
84
|
+
duodecillion:
|
85
|
+
one: duodecilionésimo
|
86
|
+
other: duodecilionésimos
|
87
|
+
tredecillion:
|
88
|
+
one: trecentilionésimo
|
89
|
+
other: trecentilionésimos
|
90
|
+
quattuordecillion:
|
91
|
+
one: quadringentilionésimo
|
92
|
+
other: quadringentilionésimos
|
@@ -3,6 +3,7 @@ require 'numbers_and_words/i18n/plurals/ua'
|
|
3
3
|
require 'numbers_and_words/i18n/plurals/fr'
|
4
4
|
require 'numbers_and_words/i18n/plurals/lv'
|
5
5
|
require 'numbers_and_words/i18n/plurals/lt'
|
6
|
+
require 'numbers_and_words/i18n/plurals/pt_br'
|
6
7
|
|
7
8
|
module NumbersAndWords
|
8
9
|
module I18n
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Hash[
|
2
2
|
NumbersAndWords::I18n::Pluralization.languages.map { |language|
|
3
3
|
[language.to_sym, {:i18n => {:plural => {
|
4
|
-
:rule => "NumbersAndWords::I18n::Plurals::#{language.titleize}::RULE".constantize
|
4
|
+
:rule => "NumbersAndWords::I18n::Plurals::#{language.titleize.gsub(/ /, '')}::RULE".constantize
|
5
5
|
}}}]
|
6
6
|
}
|
7
7
|
]
|
@@ -7,6 +7,7 @@ require 'numbers_and_words/strategies/array_joiner/languages/en_gb'
|
|
7
7
|
require 'numbers_and_words/strategies/array_joiner/languages/hu'
|
8
8
|
require 'numbers_and_words/strategies/array_joiner/languages/ru'
|
9
9
|
require 'numbers_and_words/strategies/array_joiner/languages/ua'
|
10
|
+
require 'numbers_and_words/strategies/array_joiner/languages/pt_br'
|
10
11
|
|
11
12
|
module NumbersAndWords
|
12
13
|
module Strategies
|
@@ -20,4 +21,4 @@ module NumbersAndWords
|
|
20
21
|
end
|
21
22
|
end
|
22
23
|
end
|
23
|
-
end
|
24
|
+
end
|
@@ -2,6 +2,7 @@ require 'numbers_and_words/strategies/figures_converter/decorators/base'
|
|
2
2
|
require 'numbers_and_words/strategies/figures_converter/decorators/en'
|
3
3
|
require 'numbers_and_words/strategies/figures_converter/decorators/en_gb'
|
4
4
|
require 'numbers_and_words/strategies/figures_converter/decorators/ru'
|
5
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/pt_br'
|
5
6
|
require 'numbers_and_words/strategies/figures_converter/decorators/hu'
|
6
7
|
require 'numbers_and_words/strategies/figures_converter/decorators/ua'
|
7
8
|
|
@@ -33,4 +34,4 @@ module NumbersAndWords
|
|
33
34
|
end
|
34
35
|
end
|
35
36
|
end
|
36
|
-
end
|
37
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Decorators
|
5
|
+
module PtBr
|
6
|
+
class Fractional < Base
|
7
|
+
|
8
|
+
def run
|
9
|
+
"#{super} #{fraction_significance}"
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def fraction_significance
|
15
|
+
@strategy.translations.micros full_fraction.fraction_capacity, figures.join.to_i
|
16
|
+
end
|
17
|
+
|
18
|
+
def full_fraction
|
19
|
+
(0..zero_length).inject(figures.clone) { |result, el| result.unshift 0 }.to_figures
|
20
|
+
end
|
21
|
+
|
22
|
+
def figures
|
23
|
+
@strategy.figures.reverse
|
24
|
+
end
|
25
|
+
|
26
|
+
def zero_length
|
27
|
+
fraction_length - figures.length
|
28
|
+
end
|
29
|
+
|
30
|
+
def fraction_length
|
31
|
+
@options[:fractional][:length].to_i
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Decorators
|
5
|
+
module PtBr
|
6
|
+
class Integral < Base
|
7
|
+
def run
|
8
|
+
"#{super}#{integral_significance}"
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def integral_significance
|
14
|
+
" #{@strategy.translations.integral quantity}" if @options[:remove_zero].nil?
|
15
|
+
end
|
16
|
+
|
17
|
+
def quantity
|
18
|
+
figures.reverse.join.to_i
|
19
|
+
end
|
20
|
+
|
21
|
+
def figures
|
22
|
+
@strategy.language.figures
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -24,6 +24,7 @@ require 'numbers_and_words/strategies/figures_converter/languages/families/cyril
|
|
24
24
|
require 'numbers_and_words/strategies/figures_converter/languages/ru'
|
25
25
|
require 'numbers_and_words/strategies/figures_converter/languages/ua'
|
26
26
|
require 'numbers_and_words/strategies/figures_converter/languages/pt'
|
27
|
+
require 'numbers_and_words/strategies/figures_converter/languages/pt_br'
|
27
28
|
|
28
29
|
require 'numbers_and_words/strategies/figures_converter/languages/ka'
|
29
30
|
|
@@ -8,36 +8,45 @@ module NumbersAndWords
|
|
8
8
|
def capacity_iteration
|
9
9
|
words = []
|
10
10
|
capacity_words = words_in_capacity(@current_capacity)
|
11
|
-
words.push megs
|
11
|
+
words.push megs unless capacity_words.empty?
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
word.gsub(@translations.ones(1), @translations.one) unless is_a_thousand? and is_a_one?
|
21
|
-
}.compact
|
22
|
-
end
|
13
|
+
capacity_words = capacity_words.map do |word|
|
14
|
+
if twenty_one?
|
15
|
+
word.gsub(@translations.ones(1), @translations.one_twenties)
|
16
|
+
elsif !thousand? || !one?
|
17
|
+
word.gsub(@translations.ones(1), @translations.one)
|
18
|
+
end
|
19
|
+
end.compact
|
23
20
|
|
24
21
|
words + capacity_words
|
25
22
|
end
|
26
23
|
|
27
|
-
def
|
28
|
-
[
|
24
|
+
def hundreds
|
25
|
+
super({ is_hundred: (figures[1, 2] == [0, 1] &&
|
26
|
+
simple_number_to_words.empty?) })
|
29
27
|
end
|
30
28
|
|
31
|
-
def
|
32
|
-
|
29
|
+
def megs
|
30
|
+
if thousand? &&
|
31
|
+
@figures.number_in_capacity(@current_capacity - 1) != 0
|
32
|
+
@translations.thousand
|
33
|
+
else
|
34
|
+
super({ number: @figures.number_in_capacity(@current_capacity) })
|
35
|
+
end
|
33
36
|
end
|
34
37
|
|
35
|
-
|
36
|
-
|
38
|
+
private
|
39
|
+
|
40
|
+
def one?
|
41
|
+
[@translations.ones(1)] == words_in_capacity(@current_capacity)
|
42
|
+
end
|
43
|
+
|
44
|
+
def thousand?
|
45
|
+
@current_capacity.odd?
|
37
46
|
end
|
38
47
|
|
39
|
-
def
|
40
|
-
|
48
|
+
def twenty_one?
|
49
|
+
figures.reverse[0..1] == [2, 1]
|
41
50
|
end
|
42
51
|
end
|
43
52
|
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Languages
|
5
|
+
class PtBr < Base
|
6
|
+
include Families::Latin
|
7
|
+
|
8
|
+
[:teens, :tens, :tens_with_ones].each do |method_name|
|
9
|
+
define_method(method_name) {
|
10
|
+
super(internal_options)
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def zero
|
15
|
+
super unless maybe_remove_zero
|
16
|
+
end
|
17
|
+
|
18
|
+
def words
|
19
|
+
super.strip
|
20
|
+
end
|
21
|
+
|
22
|
+
def complex_number_to_words
|
23
|
+
super.reject { |x| x.nil? }
|
24
|
+
end
|
25
|
+
|
26
|
+
def capacity_iteration
|
27
|
+
words = []
|
28
|
+
capacity_words = words_in_capacity(current_capacity)
|
29
|
+
words.push(megs) unless capacity_words.empty? || (capacity_words.empty? && figures[0] == 1)
|
30
|
+
words + capacity_words
|
31
|
+
end
|
32
|
+
|
33
|
+
def ones
|
34
|
+
super internal_options.merge({:is_one_thousand => is_one_thousand?})
|
35
|
+
end
|
36
|
+
|
37
|
+
def hundreds
|
38
|
+
super(internal_options.merge({:is_hundred => is_hundred?, :is_one_hundred => is_one_hundred?, :gender => gender}))
|
39
|
+
end
|
40
|
+
|
41
|
+
def megs
|
42
|
+
super(internal_options.merge({
|
43
|
+
:is_one => words_in_capacity(current_capacity) == [translations.ones(1, internal_options)],
|
44
|
+
:is_opaque => is_opaque?,
|
45
|
+
:is_without_connector => is_without_connector?,
|
46
|
+
:is_with_comma => is_with_comma?
|
47
|
+
}))
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def internal_options
|
53
|
+
{:gender => gender, :prefix => maybe_ordinal}
|
54
|
+
end
|
55
|
+
|
56
|
+
def maybe_ordinal
|
57
|
+
@options.ordinal.result
|
58
|
+
end
|
59
|
+
|
60
|
+
def gender
|
61
|
+
return (options.gender.result || :male) if maybe_ordinal
|
62
|
+
|
63
|
+
@current_capacity ||= 0
|
64
|
+
if @current_capacity > 0 && figures[0] == 1
|
65
|
+
:male
|
66
|
+
else
|
67
|
+
options.gender.result
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def is_hundred?
|
72
|
+
figures[0] == 0 && figures[1] == 0 && simple_number_to_words.empty?
|
73
|
+
end
|
74
|
+
|
75
|
+
def is_one_hundred?
|
76
|
+
is_hundred? && figures[2] == 1
|
77
|
+
end
|
78
|
+
|
79
|
+
def is_opaque?
|
80
|
+
figures.is_opaque? current_capacity
|
81
|
+
end
|
82
|
+
|
83
|
+
def is_one_thousand?
|
84
|
+
@current_capacity == 1 && figures[0] == 1 && figures.hundreds.nil? && figures.tens.nil?
|
85
|
+
end
|
86
|
+
|
87
|
+
def is_without_connector?
|
88
|
+
return false if is_with_comma?
|
89
|
+
# without connector when there is hundreds and tens_with_ones
|
90
|
+
return true if figures.hundreds and figures.tens_with_ones
|
91
|
+
# without connector when there is hundreds and tens
|
92
|
+
return true if figures.hundreds and figures.tens
|
93
|
+
# without connector when there is hundreds and ones
|
94
|
+
return true if figures.hundreds and figures.ones
|
95
|
+
false
|
96
|
+
end
|
97
|
+
|
98
|
+
def is_with_comma?
|
99
|
+
return false unless @current_capacity > 1
|
100
|
+
# if any lower capacity is single word, in portuguese only tens are single words
|
101
|
+
number_under_capacity = figures.number_under_capacity(@current_capacity)
|
102
|
+
return false if number_under_capacity < 20
|
103
|
+
|
104
|
+
figures_under_capacity = figures.figures_array_under_capacity(@current_capacity)
|
105
|
+
return false if figures_under_capacity.count(0) == (figures_under_capacity.size - 1)
|
106
|
+
|
107
|
+
# else use comma
|
108
|
+
true
|
109
|
+
end
|
110
|
+
|
111
|
+
def maybe_remove_zero
|
112
|
+
@options.remove_zero.result
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'numbers_and_words/strategies/figures_converter/options/en'
|
2
2
|
require 'numbers_and_words/strategies/figures_converter/options/en_gb'
|
3
3
|
require 'numbers_and_words/strategies/figures_converter/options/ru'
|
4
|
+
require 'numbers_and_words/strategies/figures_converter/options/pt_br'
|
4
5
|
require 'numbers_and_words/strategies/figures_converter/options/ua'
|
5
6
|
require 'numbers_and_words/strategies/figures_converter/options/hu'
|
6
7
|
|
@@ -35,4 +36,4 @@ module NumbersAndWords
|
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
38
|
-
end
|
39
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Options
|
5
|
+
module PtBr
|
6
|
+
class Gender
|
7
|
+
attr_accessor :strategy, :options
|
8
|
+
|
9
|
+
def initialize proxy, *args, &block
|
10
|
+
@strategy = proxy.strategy
|
11
|
+
@options = proxy.options
|
12
|
+
end
|
13
|
+
|
14
|
+
def result
|
15
|
+
gender = active? ? @options[:gender].to_sym : :male
|
16
|
+
[:male, :female].include?(gender) ? gender : :male
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def active?
|
22
|
+
@options[:gender]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Options
|
5
|
+
module PtBr
|
6
|
+
class Ordinal
|
7
|
+
def initialize proxy, *args, &block
|
8
|
+
@strategy = proxy.strategy
|
9
|
+
@options = proxy.options
|
10
|
+
end
|
11
|
+
|
12
|
+
def result
|
13
|
+
return :ordinal if active?
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def active?
|
19
|
+
@options[:ordinal]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Options
|
5
|
+
module PtBr
|
6
|
+
class RemoveZero
|
7
|
+
attr_accessor :strategy, :options
|
8
|
+
|
9
|
+
def initialize proxy, *args, &block
|
10
|
+
@strategy = proxy.strategy
|
11
|
+
@options = proxy.options
|
12
|
+
end
|
13
|
+
|
14
|
+
def result
|
15
|
+
active?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def active?
|
21
|
+
@options[:remove_zero]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -19,6 +19,7 @@ require 'numbers_and_words/translations/lv'
|
|
19
19
|
require 'numbers_and_words/translations/lt'
|
20
20
|
require 'numbers_and_words/translations/de'
|
21
21
|
require 'numbers_and_words/translations/pt'
|
22
|
+
require 'numbers_and_words/translations/pt_br'
|
22
23
|
require 'numbers_and_words/translations/ka'
|
23
24
|
|
24
25
|
module NumbersAndWords
|
@@ -5,37 +5,40 @@ module NumbersAndWords
|
|
5
5
|
|
6
6
|
TENS_CASE = 2
|
7
7
|
|
8
|
-
def one
|
8
|
+
def one
|
9
9
|
t(:one)
|
10
10
|
end
|
11
11
|
|
12
|
-
def ones
|
12
|
+
def ones(number, _options = {})
|
13
13
|
t(:ones)[number]
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
16
|
+
def one_twenties
|
17
|
+
t(:one_twenties)
|
18
|
+
end
|
19
|
+
|
20
|
+
def ones_twenties(number)
|
17
21
|
t(:ones_twenties)[number]
|
18
22
|
end
|
19
23
|
|
20
|
-
def tens
|
24
|
+
def tens(numbers, options = {})
|
21
25
|
options[:alone] = true if options[:alone].nil?
|
22
26
|
(numbers == TENS_CASE && options[:alone]) ? t(:twenty) : super(numbers)
|
23
27
|
end
|
24
28
|
|
25
|
-
def tens_with_ones
|
26
|
-
|
29
|
+
def tens_with_ones(numbers, _options = {})
|
30
|
+
union = numbers[1] == TENS_CASE ? '' : " #{t(:union)} "
|
27
31
|
ones_number = numbers[1] == TENS_CASE ? ones_twenties(numbers[0]) : ones(numbers[0])
|
28
|
-
[tens(numbers[1], :
|
32
|
+
[tens(numbers[1], alone: false), union, ones_number].join
|
29
33
|
end
|
30
34
|
|
31
|
-
def hundreds
|
35
|
+
def hundreds(number, options = {})
|
32
36
|
options[:is_hundred] = false if options[:is_hundred].nil?
|
33
37
|
options[:is_hundred] ? t(:one_hundred) : t(:hundreds)[number - 1]
|
34
38
|
end
|
35
39
|
|
36
|
-
def
|
37
|
-
|
38
|
-
options[:is_one] ? t(:mega)[capacity] : t(:megas)[capacity]
|
40
|
+
def thousand
|
41
|
+
t(:thousand)
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Translations
|
3
|
+
class PtBr < Base
|
4
|
+
include NumbersAndWords::Translations::Families::Latin
|
5
|
+
include NumbersAndWords::Translations::Extensions::FractionSignificance
|
6
|
+
|
7
|
+
def integral number, options = {}
|
8
|
+
t(:integral, :count => number)
|
9
|
+
end
|
10
|
+
|
11
|
+
def zero options = {}
|
12
|
+
t([options[:prefix], :ones, :male].join('.'))[0]
|
13
|
+
end
|
14
|
+
|
15
|
+
def ones number, options = {}
|
16
|
+
return if options[:is_one_thousand]
|
17
|
+
t([options[:prefix], :ones, options[:gender]].join('.'))[number]
|
18
|
+
end
|
19
|
+
|
20
|
+
def tens number, options = {}
|
21
|
+
options[:alone] = true if options[:alone].nil?
|
22
|
+
path = [options[:prefix], :tens]
|
23
|
+
path.push(options[:gender]) if ordinal? options
|
24
|
+
translated = t(path.join('.'))[number]
|
25
|
+
options[:alone] ? translated : "#{union} " + translated
|
26
|
+
end
|
27
|
+
|
28
|
+
def teens number, options = {}
|
29
|
+
return [tens(1, options), ' ', ones(number[0], options)].join if ordinal? options
|
30
|
+
super(number, options)
|
31
|
+
end
|
32
|
+
|
33
|
+
def tens_with_ones numbers, options = {}
|
34
|
+
connector = ' '
|
35
|
+
connector = " #{union} " unless ordinal? options
|
36
|
+
[tens(numbers[1], options), connector, ones(numbers[0], options)].join
|
37
|
+
end
|
38
|
+
|
39
|
+
def hundreds number, options = {}
|
40
|
+
return t(:one_hundred) if options[:is_one_hundred] and !(ordinal? options)
|
41
|
+
translated = t([options[:prefix], :hundreds, options[:gender]].join('.'))[number - 1]
|
42
|
+
return translated if ordinal? options
|
43
|
+
options[:is_hundred] ? translated : translated + " #{union}"
|
44
|
+
end
|
45
|
+
|
46
|
+
def megs capacity, options = {}
|
47
|
+
return t([options[:prefix], :mega, options[:gender]].join('.'))[capacity] if ordinal? options
|
48
|
+
|
49
|
+
options[:is_one] = false if options[:is_one].nil?
|
50
|
+
connector = " #{union}"
|
51
|
+
connector = ',' if options[:is_with_comma]
|
52
|
+
suffix = options[:is_opaque] ? '' : connector
|
53
|
+
suffix = options[:is_without_connector] ? '' : suffix
|
54
|
+
(options[:is_one] ? t(:mega)[capacity] : t(:megas)[capacity]) + suffix
|
55
|
+
end
|
56
|
+
|
57
|
+
def micros capacity, number, separator = ' de '
|
58
|
+
micro, prefix = capacity
|
59
|
+
micros = number ? t(micro(micro), :count => number) : micro(micro)
|
60
|
+
[micro_prefix(prefix, number), micros].compact.join separator
|
61
|
+
end
|
62
|
+
|
63
|
+
def micro_prefix capacity, number
|
64
|
+
case capacity
|
65
|
+
when 2 then t('micro_prefix.hundreds', :count => number)
|
66
|
+
when 1 then t('micro_prefix.tens', :count => number)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def ordinal? options
|
73
|
+
options[:prefix] == :ordinal
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module NumbersAndWords
|
2
2
|
module Wrappers
|
3
3
|
class Float
|
4
|
+
ZERO_SYMBOL = '0'
|
5
|
+
|
4
6
|
attr_accessor :number
|
5
7
|
|
6
8
|
def initialize number
|
@@ -8,6 +10,7 @@ module NumbersAndWords
|
|
8
10
|
end
|
9
11
|
|
10
12
|
def to_words options = {}
|
13
|
+
@options = options
|
11
14
|
words = []
|
12
15
|
words << integral_part_with(options)
|
13
16
|
words << fractional_part_with(options) unless fractional_part_is_nil?
|
@@ -16,6 +19,8 @@ module NumbersAndWords
|
|
16
19
|
|
17
20
|
private
|
18
21
|
|
22
|
+
attr_accessor :options
|
23
|
+
|
19
24
|
def parts
|
20
25
|
number.to_s.split '.'
|
21
26
|
end
|
@@ -25,7 +30,9 @@ module NumbersAndWords
|
|
25
30
|
end
|
26
31
|
|
27
32
|
def fractional_part
|
28
|
-
parts.last
|
33
|
+
part = parts.last
|
34
|
+
part += ZERO_SYMBOL*(precision - part.length) if precision
|
35
|
+
part
|
29
36
|
end
|
30
37
|
|
31
38
|
def integral_part_with options
|
@@ -41,12 +48,17 @@ module NumbersAndWords
|
|
41
48
|
end
|
42
49
|
|
43
50
|
def fractional_options
|
44
|
-
|
51
|
+
length = precision || fractional_part.length
|
52
|
+
{:fractional => {:length => length}}
|
45
53
|
end
|
46
54
|
|
47
55
|
def fractional_part_is_nil?
|
48
56
|
0 == fractional_part.to_i
|
49
57
|
end
|
58
|
+
|
59
|
+
def precision
|
60
|
+
options.fetch(:precision, nil)
|
61
|
+
end
|
50
62
|
end
|
51
63
|
end
|
52
64
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: numbers_and_words
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kirill Lazarev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|
@@ -71,11 +71,9 @@ email: k.s.lazarev@gmail.com
|
|
71
71
|
executables: []
|
72
72
|
extensions: []
|
73
73
|
extra_rdoc_files:
|
74
|
-
- CHANGELOG.md
|
75
74
|
- LICENSE.txt
|
76
75
|
- README.rdoc
|
77
76
|
files:
|
78
|
-
- CHANGELOG.md
|
79
77
|
- LICENSE.txt
|
80
78
|
- README.rdoc
|
81
79
|
- lib/numbers_and_words.rb
|
@@ -102,6 +100,7 @@ files:
|
|
102
100
|
- lib/numbers_and_words/i18n/locales/numbers.lt.yml
|
103
101
|
- lib/numbers_and_words/i18n/locales/numbers.lv.yml
|
104
102
|
- lib/numbers_and_words/i18n/locales/numbers.nl.yml
|
103
|
+
- lib/numbers_and_words/i18n/locales/numbers.pt-BR.yml
|
105
104
|
- lib/numbers_and_words/i18n/locales/numbers.pt.yml
|
106
105
|
- lib/numbers_and_words/i18n/locales/numbers.ru.yml
|
107
106
|
- lib/numbers_and_words/i18n/locales/numbers.se.yml
|
@@ -112,6 +111,7 @@ files:
|
|
112
111
|
- lib/numbers_and_words/i18n/plurals/lt.rb
|
113
112
|
- lib/numbers_and_words/i18n/plurals/lv.rb
|
114
113
|
- lib/numbers_and_words/i18n/plurals/plurals.rb
|
114
|
+
- lib/numbers_and_words/i18n/plurals/pt_br.rb
|
115
115
|
- lib/numbers_and_words/i18n/plurals/ru.rb
|
116
116
|
- lib/numbers_and_words/i18n/plurals/ua.rb
|
117
117
|
- lib/numbers_and_words/strategies.rb
|
@@ -122,6 +122,7 @@ files:
|
|
122
122
|
- lib/numbers_and_words/strategies/array_joiner/languages/en_gb.rb
|
123
123
|
- lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb
|
124
124
|
- lib/numbers_and_words/strategies/array_joiner/languages/hu.rb
|
125
|
+
- lib/numbers_and_words/strategies/array_joiner/languages/pt_br.rb
|
125
126
|
- lib/numbers_and_words/strategies/array_joiner/languages/ru.rb
|
126
127
|
- lib/numbers_and_words/strategies/array_joiner/languages/ua.rb
|
127
128
|
- lib/numbers_and_words/strategies/figures_converter.rb
|
@@ -139,6 +140,10 @@ files:
|
|
139
140
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/base.rb
|
140
141
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb
|
141
142
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/integral.rb
|
143
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/pt_br.rb
|
144
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/pt_br/base.rb
|
145
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/pt_br/fractional.rb
|
146
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/pt_br/integral.rb
|
142
147
|
- lib/numbers_and_words/strategies/figures_converter/decorators/ru.rb
|
143
148
|
- lib/numbers_and_words/strategies/figures_converter/decorators/ru/base.rb
|
144
149
|
- lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb
|
@@ -166,6 +171,7 @@ files:
|
|
166
171
|
- lib/numbers_and_words/strategies/figures_converter/languages/lv.rb
|
167
172
|
- lib/numbers_and_words/strategies/figures_converter/languages/nl.rb
|
168
173
|
- lib/numbers_and_words/strategies/figures_converter/languages/pt.rb
|
174
|
+
- lib/numbers_and_words/strategies/figures_converter/languages/pt_br.rb
|
169
175
|
- lib/numbers_and_words/strategies/figures_converter/languages/ru.rb
|
170
176
|
- lib/numbers_and_words/strategies/figures_converter/languages/se.rb
|
171
177
|
- lib/numbers_and_words/strategies/figures_converter/languages/tr.rb
|
@@ -185,6 +191,10 @@ files:
|
|
185
191
|
- lib/numbers_and_words/strategies/figures_converter/options/en_gb/remove_zero.rb
|
186
192
|
- lib/numbers_and_words/strategies/figures_converter/options/hu.rb
|
187
193
|
- lib/numbers_and_words/strategies/figures_converter/options/hu/ordinal.rb
|
194
|
+
- lib/numbers_and_words/strategies/figures_converter/options/pt_br.rb
|
195
|
+
- lib/numbers_and_words/strategies/figures_converter/options/pt_br/gender.rb
|
196
|
+
- lib/numbers_and_words/strategies/figures_converter/options/pt_br/ordinal.rb
|
197
|
+
- lib/numbers_and_words/strategies/figures_converter/options/pt_br/remove_zero.rb
|
188
198
|
- lib/numbers_and_words/strategies/figures_converter/options/ru.rb
|
189
199
|
- lib/numbers_and_words/strategies/figures_converter/options/ru/gender.rb
|
190
200
|
- lib/numbers_and_words/strategies/figures_converter/options/ua.rb
|
@@ -208,6 +218,7 @@ files:
|
|
208
218
|
- lib/numbers_and_words/translations/lv.rb
|
209
219
|
- lib/numbers_and_words/translations/nl.rb
|
210
220
|
- lib/numbers_and_words/translations/pt.rb
|
221
|
+
- lib/numbers_and_words/translations/pt_br.rb
|
211
222
|
- lib/numbers_and_words/translations/ru.rb
|
212
223
|
- lib/numbers_and_words/translations/se.rb
|
213
224
|
- lib/numbers_and_words/translations/tr.rb
|
@@ -236,7 +247,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
247
|
version: '0'
|
237
248
|
requirements: []
|
238
249
|
rubyforge_project:
|
239
|
-
rubygems_version: 2.
|
250
|
+
rubygems_version: 2.6.12
|
240
251
|
signing_key:
|
241
252
|
specification_version: 4
|
242
253
|
summary: Convert numbers to words using I18N.
|
data/CHANGELOG.md
DELETED
@@ -1,167 +0,0 @@
|
|
1
|
-
## 0.10.5 (March 9, 2016)
|
2
|
-
|
3
|
-
### Bugs
|
4
|
-
* Fix pluralization rules for Spanish. \[[#122](https://github.com/kslazarev/numbers_and_words/pull/122)\] \([@jlduran](https://github.com/jlduran)\)
|
5
|
-
* Fix long scale names in Spanish. \[[#112](https://github.com/kslazarev/numbers_and_words/pull/112)\] \([@jlduran](https://github.com/jlduran)\)
|
6
|
-
* Fix Turkish hundred and thousand numbers. \[[#113](https://github.com/kslazarev/numbers_and_words/pull/113)\] \([@cbilgili](https://github.com/cbilgili)\)
|
7
|
-
* Fix one/other convention in Spanish and French. \[[#116](https://github.com/kslazarev/numbers_and_words/pull/116)\] \([@joseramonc](https://github.com/joseramonc)\)
|
8
|
-
* Fix hundreds in Lithuanian. \[[#117](https://github.com/kslazarev/numbers_and_words/pull/117)\] \([@osegrums](https://github.com/osegrums)\)
|
9
|
-
|
10
|
-
## 0.10.4 (March 02, 2015)
|
11
|
-
|
12
|
-
### Bugs
|
13
|
-
* Fix Lithuanian `other` spelling errors. \[[#109](https://github.com/kslazarev/numbers_and_words/pull/109)\] \([@ViliusLuneckas](https://github.com/ViliusLuneckas)\) \(assignee: [@miks](https://github.com/miks)\)
|
14
|
-
|
15
|
-
## 0.10.3 (May 8, 2014)
|
16
|
-
|
17
|
-
### Features
|
18
|
-
* Add Georgian language. \[[#100](https://github.com/kslazarev/numbers_and_words/pull/100)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
19
|
-
|
20
|
-
### Bugs
|
21
|
-
* Simplify estonian tens with ones method. \[[#101](https://github.com/kslazarev/numbers_and_words/pull/101)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
22
|
-
|
23
|
-
## 0.10.2 (December 18, 2013)
|
24
|
-
|
25
|
-
### Bugs
|
26
|
-
* Fix latvian one thousand case. \[[#88](https://github.com/kslazarev/numbers_and_words/pull/88)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
27
|
-
|
28
|
-
### Supports
|
29
|
-
* Reach 100% coverage. \[[#89](https://github.com/kslazarev/numbers_and_words/pull/89)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
30
|
-
|
31
|
-
## 0.10.1 (October 22, 2013)
|
32
|
-
|
33
|
-
### Bugs
|
34
|
-
* Minor orthographic typo in Spanish language. \[[#85](https://github.com/kslazarev/numbers_and_words/pull/85)\] \([@jlduran](https://github.com/jlduran)\) \(assignee: [@jlduran](https://github.com/jlduran)\)
|
35
|
-
|
36
|
-
## 0.10.0 (September 03, 2013)
|
37
|
-
|
38
|
-
### Features
|
39
|
-
* Add Estonian language. \[[#82](https://github.com/kslazarev/numbers_and_words/pull/82)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
40
|
-
* Add Lithuanian language. \[[#77](https://github.com/kslazarev/numbers_and_words/pull/77)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
41
|
-
|
42
|
-
### Bugs
|
43
|
-
* Fix latvian one hundread cases. \[[#81](https://github.com/kslazarev/numbers_and_words/pull/81)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
44
|
-
|
45
|
-
### Supports
|
46
|
-
* Added @miks contacts to contributors list in README. \[[#79](https://github.com/kslazarev/numbers_and_words/issues/79)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@miks](https://github.com/miks)\)
|
47
|
-
|
48
|
-
## 0.9.0 (May 19, 2013)
|
49
|
-
|
50
|
-
### Features
|
51
|
-
* Add Latvian language. \[[#70](https://github.com/kslazarev/numbers_and_words/pull/70)\] \([@martinsspringis](https://github.com/martinsspringis)\) \(assignee: [@martinsspringis](https://github.com/martinsspringis)\)
|
52
|
-
* Add German language. \[[#52](https://github.com/kslazarev/numbers_and_words/pull/52)\] \([@GSI](https://github.com/GSI)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
53
|
-
|
54
|
-
### Supports
|
55
|
-
* Add @martinsspringis contacts and some examples on Latvian language to README. \[[#71](https://github.com/kslazarev/numbers_and_words/issues/71)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@martinsspringis](https://github.com/martinsspringis)\)
|
56
|
-
|
57
|
-
## 0.8.0 (April 29, 2013)
|
58
|
-
|
59
|
-
### Features
|
60
|
-
* Try to use global language by default, if regional language is missing (EnUs is missing). \[[#65](https://github.com/kslazarev/numbers_and_words/issues/65)\] \([@hubrix](https://github.com/hubrix)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
61
|
-
|
62
|
-
### Supports
|
63
|
-
* Add regional languages aliases to README. \[[#67](https://github.com/kslazarev/numbers_and_words/issues/67)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
64
|
-
* Remove all warnings in gem. (ruby -w). \[[#66](https://github.com/kslazarev/numbers_and_words/pull/66)\] \([@nikhaldi](https://github.com/nikhaldi)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
65
|
-
|
66
|
-
## 0.7.1 (April 22, 2013)
|
67
|
-
|
68
|
-
### Bugs
|
69
|
-
* Wrong hundreds separator with British. \[[#62](https://github.com/kslazarev/numbers_and_words/issues/62)\] \([@eLod](https://github.com/eLod)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
70
|
-
|
71
|
-
## 0.7.0 (April 14, 2013)
|
72
|
-
|
73
|
-
### Features
|
74
|
-
* Send number's options through array. \[[#60](https://github.com/kslazarev/numbers_and_words/issues/60)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
75
|
-
* Add British English. \[[#57](https://github.com/kslazarev/numbers_and_words/issues/57)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@eLod](https://github.com/eLod)\)
|
76
|
-
|
77
|
-
## 0.6.1 (April 11, 2013)
|
78
|
-
|
79
|
-
### Bugs
|
80
|
-
* Extra 'and' added after round hundreds (using hundreds_with_union: true) in English. \[[#58](https://github.com/kslazarev/numbers_and_words/issues/58)\] \([@mafraba](https://github.com/mafraba)\) \(assignee: [@eLod](https://github.com/eLod)\)
|
81
|
-
|
82
|
-
## 0.6.0 (March 25, 2013)
|
83
|
-
|
84
|
-
### Features
|
85
|
-
* Support fractional form for Ukranian. \[[#54](https://github.com/kslazarev/numbers_and_words/issues/54)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@Shk-Serji](https://github.com/Shk-Serji)\)
|
86
|
-
* Support fractional form for Russian. \[[#53](https://github.com/kslazarev/numbers_and_words/issues/53)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
87
|
-
* Added functionality for spanish . \[[#51](https://github.com/kslazarev/numbers_and_words/pull/51)\] \([@jaambros](https://github.com/jaambros)\) \(assignee: [@jaambros](https://github.com/jaambros)\)
|
88
|
-
* Support ordinal form for English and Hungarian. \[[#50](https://github.com/kslazarev/numbers_and_words/issues/50)\] \([@eLod](https://github.com/eLod)\) \(assignee: [@eLod](https://github.com/eLod)\)
|
89
|
-
* Add option :remove_hyphen for English language. \[[#45](https://github.com/kslazarev/numbers_and_words/issues/45)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
90
|
-
* Add option :hundreds_with_union for English language. \[[#44](https://github.com/kslazarev/numbers_and_words/issues/44)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
91
|
-
* Add Spanish language. (experimental). \[[#42](https://github.com/kslazarev/numbers_and_words/issues/42)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
92
|
-
* Add Swedish language. (experimental). \[[#41](https://github.com/kslazarev/numbers_and_words/issues/41)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
93
|
-
* Add Hungarian language. \[[#40](https://github.com/kslazarev/numbers_and_words/pull/40)\] \([@eLod](https://github.com/eLod)\) \(assignee: [@eLod](https://github.com/eLod)\)
|
94
|
-
* Add option :gender for Russian language. \[[#39](https://github.com/kslazarev/numbers_and_words/issues/39)\] \([@ermolaev](https://github.com/ermolaev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
95
|
-
* Gem numbers_and_words not working for decimal values. \[[#38](https://github.com/kslazarev/numbers_and_words/issues/38)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@eLod](https://github.com/eLod)\)
|
96
|
-
|
97
|
-
### Supports
|
98
|
-
* Update 'code climate' badge. \[[#47](https://github.com/kslazarev/numbers_and_words/issues/47)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
99
|
-
* Add @eLog contacts and project description on Hungarian language to README. \[[#46](https://github.com/kslazarev/numbers_and_words/issues/46)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@eLod](https://github.com/eLod)\)
|
100
|
-
* Add language specific options. \[[#43](https://github.com/kslazarev/numbers_and_words/issues/43)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
101
|
-
|
102
|
-
## 0.5.0 (October 19, 2012)
|
103
|
-
|
104
|
-
### Features
|
105
|
-
* Add Italian language. (experimental). \[[#34](https://github.com/kslazarev/numbers_and_words/issues/34)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
106
|
-
* Add Dutch language. (experimental). \[[#33](https://github.com/kslazarev/numbers_and_words/issues/33)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
107
|
-
* Add French language. \[[#29](https://github.com/kslazarev/numbers_and_words/pull/29)\] \([@sorich87](https://github.com/sorich87)\) \(assignee: [@sorich87](https://github.com/sorich87)\)
|
108
|
-
|
109
|
-
### Supports
|
110
|
-
* Add @sorich87 contacts to README. \[[#36](https://github.com/kslazarev/numbers_and_words/issues/36)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@sorich87](https://github.com/sorich87)\)
|
111
|
-
* Add Code Climate badge. \[[#35](https://github.com/kslazarev/numbers_and_words/issues/35)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
112
|
-
* Refactoring tests. \[[#32](https://github.com/kslazarev/numbers_and_words/issues/32)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
113
|
-
* Refactoring strategies. \[[#31](https://github.com/kslazarev/numbers_and_words/issues/31)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
114
|
-
|
115
|
-
## 0.4.0 (June 24, 2012)
|
116
|
-
|
117
|
-
### Features
|
118
|
-
* Add Turkish language. \[[#26](https://github.com/kslazarev/numbers_and_words/issues/26)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@Shk-Serji](https://github.com/Shk-Serji)\)
|
119
|
-
* Add Ukrainian language. \[[#25](https://github.com/kslazarev/numbers_and_words/issues/25)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@Shk-Serji](https://github.com/Shk-Serji)\)
|
120
|
-
|
121
|
-
### Supports
|
122
|
-
* Combine all connections with i18n library in one sub-module. \[[#28](https://github.com/kslazarev/numbers_and_words/issues/28)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
123
|
-
* Add separate logics for pluralization in different languages. \[[#27](https://github.com/kslazarev/numbers_and_words/issues/27)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
124
|
-
|
125
|
-
## 0.3.2 (June 24, 2012)
|
126
|
-
|
127
|
-
### Bugs
|
128
|
-
* Ломает плюрализацию russian. \[[#22](https://github.com/kslazarev/numbers_and_words/issues/22)\] \([@yura](https://github.com/yura)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
129
|
-
|
130
|
-
## 0.3.1 (May 04, 2012)
|
131
|
-
|
132
|
-
### Bugs
|
133
|
-
* Fixes 80 in English. \[[#18](https://github.com/kslazarev/numbers_and_words/pull/18)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
134
|
-
|
135
|
-
### Supports
|
136
|
-
* Add CHANGELOG.md. \[[#19](https://github.com/kslazarev/numbers_and_words/issues/19)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
137
|
-
* Readable specs. \[[#16](https://github.com/kslazarev/numbers_and_words/pull/16)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
138
|
-
|
139
|
-
### Deprecations
|
140
|
-
* Add deprecation warning for using gem 'number_to_words_ru' . \[[#21](https://github.com/kslazarev/numbers_and_words/issues/21)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
141
|
-
|
142
|
-
## 0.3.0 (March 24, 2012)
|
143
|
-
|
144
|
-
### Bugs
|
145
|
-
* Rails 3 will choke on a nested array. \[[#10](https://github.com/kslazarev/numbers_and_words/pull/10)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
146
|
-
* English fixes and tests. \[[#9](https://github.com/kslazarev/numbers_and_words/pull/9)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
147
|
-
* Namespaced NumbersAndWords. \[[#7](https://github.com/kslazarev/numbers_and_words/pull/7)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
148
|
-
|
149
|
-
### Supports
|
150
|
-
* Add contacts to README. \[[#14](https://github.com/kslazarev/numbers_and_words/issues/14)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
151
|
-
* Fixed typo in readme. \[[#13](https://github.com/kslazarev/numbers_and_words/pull/13)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
152
|
-
* Added Travis-ci. \[[#12](https://github.com/kslazarev/numbers_and_words/pull/12)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
153
|
-
* Fix README (Russian & English). \[[#11](https://github.com/kslazarev/numbers_and_words/pull/11)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
154
|
-
* Rename the repo at https://github.com/kslazarev/number_to_words_ru. \[[#8](https://github.com/kslazarev/numbers_and_words/issues/8)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
155
|
-
* Switch a hard-coded gemspec to Jeweler. \[[#6](https://github.com/kslazarev/numbers_and_words/pull/6)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@dblock](https://github.com/dblock)\)
|
156
|
-
|
157
|
-
## 0.3.0.alpha (March 24, 2012)
|
158
|
-
|
159
|
-
### Features
|
160
|
-
* Check working with ruby 1.9.3. \[[#4](https://github.com/kslazarev/numbers_and_words/issues/4)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
161
|
-
|
162
|
-
### Bugs
|
163
|
-
* Bundle exec rake problem. \[[#3](https://github.com/kslazarev/numbers_and_words/issues/3)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
164
|
-
|
165
|
-
### Supports
|
166
|
-
* Remove temporary file Gemfile.lock. \[[#5](https://github.com/kslazarev/numbers_and_words/issues/5)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|
167
|
-
* Renamed gem from number_to_words_ru to numbers_and_words. \[[#2](https://github.com/kslazarev/numbers_and_words/pull/2)\] \([@dblock](https://github.com/dblock)\) \(assignee: [@kslazarev](https://github.com/kslazarev)\)
|