numbers_and_words 1.0.1 → 1.0.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -3
- data/README.rdoc +13 -2
- data/lib/numbers_and_words/helper_classes/array_extensions/helpers.rb +1 -1
- data/lib/numbers_and_words/i18n/locales/numbers.fr-CH.yml +101 -0
- data/lib/numbers_and_words/i18n/locales/numbers.nl.yml +45 -0
- data/lib/numbers_and_words/i18n.rb +1 -1
- data/lib/numbers_and_words/strategies/array_joiner/languages/fr-CH.rb +12 -0
- data/lib/numbers_and_words/strategies/array_joiner/languages/nl.rb +12 -0
- data/lib/numbers_and_words/strategies/array_joiner/languages.rb +2 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH/base.rb +14 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH/fractional.rb +14 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH/integral.rb +14 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH.rb +5 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/nl/base.rb +14 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb +40 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/nl/integral.rb +19 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/nl.rb +5 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators.rb +2 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/fr-CH.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/nl.rb +21 -3
- data/lib/numbers_and_words/strategies/figures_converter/languages/vi.rb +7 -7
- data/lib/numbers_and_words/strategies/figures_converter/languages.rb +1 -0
- data/lib/numbers_and_words/translations/base.rb +1 -1
- data/lib/numbers_and_words/translations/de.rb +1 -0
- data/lib/numbers_and_words/translations/fr-CH.rb +28 -0
- data/lib/numbers_and_words/translations/ka.rb +1 -0
- data/lib/numbers_and_words/translations/nl.rb +12 -2
- data/lib/numbers_and_words/translations/vi.rb +1 -0
- data/lib/numbers_and_words/translations.rb +1 -0
- data/lib/numbers_and_words/version.rb +1 -1
- metadata +16 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a2463adcfe14855e68f922f5d1a36844542f6d679d7a07c48e7db1f6913154ae
|
|
4
|
+
data.tar.gz: 25112807d5a331f3935ae9bdc92e26668a5ff77298599df412bfc2e9094ef92b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f810b928a2f564b6051b1964ee3fa4970db403bdac92c0b93194713e51e211277f3470fc14bd47974aeb6ebf8cddc916d9cfdb08424259de84338b2d3c3b6f00
|
|
7
|
+
data.tar.gz: 13272058723519b964a39bbf41c5a8774d21a8e19e45111bda6d883bab1925def49003e36ab897a7d2d91d220d69b1cd391589b94d0f6f86f865d42e69be73a3
|
data/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
## 1.
|
|
1
|
+
## 1.0.4 (Next)
|
|
2
2
|
|
|
3
3
|
### Features
|
|
4
4
|
* Your contribution here.
|
|
5
5
|
|
|
6
|
+
## 1.0.3 (Dec 23, 2025)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
* Upgrade RuboCop to 1.78.0. \[[#208](https://github.com/kslazarev/numbers_and_words/pull/208)\]
|
|
10
|
+
* Add support for Swiss-French language. \[[#210](https://github.com/kslazarev/numbers_and_words/pull/210)\]
|
|
11
|
+
|
|
12
|
+
## 1.0.2 (Jul 5, 2025)
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
* Add support for Dutch floating-point numbers. \[[#207](https://github.com/kslazarev/numbers_and_words/pull/207)\]
|
|
16
|
+
|
|
6
17
|
## 1.0.1 (March 7, 2025)
|
|
7
18
|
|
|
8
19
|
### Features
|
|
@@ -154,7 +165,7 @@
|
|
|
154
165
|
* Add Lithuanian language. \[[#77](https://github.com/kslazarev/numbers_and_words/pull/77)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
|
155
166
|
|
|
156
167
|
### Bugs
|
|
157
|
-
* Fix
|
|
168
|
+
* Fix Latvian one hundred cases. \[[#81](https://github.com/kslazarev/numbers_and_words/pull/81)\] \([@miks](https://github.com/miks)\) \(assignee: [@miks](https://github.com/miks)\)
|
|
158
169
|
|
|
159
170
|
### Supports
|
|
160
171
|
* 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)\)
|
|
@@ -196,7 +207,7 @@
|
|
|
196
207
|
## 0.6.0 (March 25, 2013)
|
|
197
208
|
|
|
198
209
|
### Features
|
|
199
|
-
* Support fractional form for
|
|
210
|
+
* Support fractional form for Ukrainian. \[[#54](https://github.com/kslazarev/numbers_and_words/issues/54)\] \([@kslazarev](https://github.com/kslazarev)\) \(assignee: [@Shk-Serji](https://github.com/Shk-Serji)\)
|
|
200
211
|
* 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)\)
|
|
201
212
|
* 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)\)
|
|
202
213
|
* 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)\)
|
data/README.rdoc
CHANGED
|
@@ -25,6 +25,7 @@ Deletrea números en varios idiomas utilizando la gema I18n.
|
|
|
25
25
|
* Spanish [es]
|
|
26
26
|
* Русский [ru]
|
|
27
27
|
* Français [fr]
|
|
28
|
+
* Français (Suisse) [fr-CH]
|
|
28
29
|
* Українська [ua]
|
|
29
30
|
* Magyar [hu]
|
|
30
31
|
* Lietuvių [lt]
|
|
@@ -47,7 +48,7 @@ Deletrea números en varios idiomas utilizando la gema I18n.
|
|
|
47
48
|
** Experimental
|
|
48
49
|
|
|
49
50
|
* {[en-AU], [en-CA], [en-IN], [en-US]}*** => [en]
|
|
50
|
-
* {[fr-CA]
|
|
51
|
+
* {[fr-CA]}*** => [fr]
|
|
51
52
|
* {[de], [de-AT], [de-CH]}*** => [de]
|
|
52
53
|
* {[it-CH]}*** => [it]
|
|
53
54
|
|
|
@@ -285,7 +286,7 @@ Deletrea números en varios idiomas utilizando la gema I18n.
|
|
|
285
286
|
I18n.with_locale(:ru) { 1001.to_words gender: :neuter }
|
|
286
287
|
=> "одна тысяча одно"
|
|
287
288
|
|
|
288
|
-
*
|
|
289
|
+
* Ukrainian
|
|
289
290
|
|
|
290
291
|
Change gender form: (gender: [:female || :male || :neuter])
|
|
291
292
|
|
|
@@ -373,6 +374,16 @@ Deletrea números en varios idiomas utilizando la gema I18n.
|
|
|
373
374
|
I18n.with_locale(:da) { 1.to_words gender: :neuter }
|
|
374
375
|
=> "et"
|
|
375
376
|
|
|
377
|
+
* Dutch
|
|
378
|
+
|
|
379
|
+
Remove 'zero' from integral part of float: (remove_zero: [true || false])
|
|
380
|
+
|
|
381
|
+
I18n.with_locale(:nl) { 0.7.to_words remove_zero: true }
|
|
382
|
+
=> "zeven tienden"
|
|
383
|
+
|
|
384
|
+
I18n.with_locale(:nl) { 0.7.to_words remove_zero: false }
|
|
385
|
+
=> "nul komma zeven tienden"
|
|
386
|
+
|
|
376
387
|
== Other options / Другие опции
|
|
377
388
|
|
|
378
389
|
* Precision
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
fr-CH:
|
|
2
|
+
numbers:
|
|
3
|
+
ones: [zéro, un, deux, trois, quatre, cinq, six, sept, huit, neuf]
|
|
4
|
+
teens: [_, onze, douze, treize, quatorze, quinze, seize, dix-sept, dix-huit, dix-neuf]
|
|
5
|
+
tens: [_, dix, vingt, trente, quarante, cinquante, soixante, septante, huitante, nonante]
|
|
6
|
+
eighty: huitante
|
|
7
|
+
hundreds:
|
|
8
|
+
one: cent
|
|
9
|
+
other: cents
|
|
10
|
+
mega: [_, thousands, millions, billions, trillions, quadrillions, quintillion, sextillions, septillions, octillions, nonillions, decillions]
|
|
11
|
+
thousands:
|
|
12
|
+
one: mille
|
|
13
|
+
other: mille
|
|
14
|
+
millions:
|
|
15
|
+
one: million
|
|
16
|
+
other: millions
|
|
17
|
+
billions:
|
|
18
|
+
one: milliard
|
|
19
|
+
other: milliards
|
|
20
|
+
trillions:
|
|
21
|
+
one: billion
|
|
22
|
+
other: billions
|
|
23
|
+
quadrillions:
|
|
24
|
+
one: billiard
|
|
25
|
+
other: billiards
|
|
26
|
+
quintillions:
|
|
27
|
+
one: trillion
|
|
28
|
+
other: trillions
|
|
29
|
+
sextillions:
|
|
30
|
+
one: trilliard
|
|
31
|
+
other: trilliards
|
|
32
|
+
septillions:
|
|
33
|
+
one: quadrillion
|
|
34
|
+
other: quadrillions
|
|
35
|
+
octillions:
|
|
36
|
+
one: quadrilliard
|
|
37
|
+
other: quadrilliards
|
|
38
|
+
nonillions:
|
|
39
|
+
one: quintillion
|
|
40
|
+
other: quintillions
|
|
41
|
+
decillions:
|
|
42
|
+
one: quintilliard
|
|
43
|
+
other: quintilliards
|
|
44
|
+
micro: [_, tenths, hundredths, thousandths, millionths, billionths, trillionths, quadrillionths, quintillionths, sextillionths, septillionths, octillionths, nonillionths, decillionths, undecillionths, duodecillionths, tredecillionths, quattuordecillionths]
|
|
45
|
+
tenths:
|
|
46
|
+
one: dixième
|
|
47
|
+
other: dixièmes
|
|
48
|
+
hundredths:
|
|
49
|
+
one: centième
|
|
50
|
+
other: centièmes
|
|
51
|
+
thousandths:
|
|
52
|
+
one: millième
|
|
53
|
+
other: millièmes
|
|
54
|
+
millionths:
|
|
55
|
+
one: millionième
|
|
56
|
+
other: millionièmes
|
|
57
|
+
billionths:
|
|
58
|
+
one: milliardième
|
|
59
|
+
other: milliardièmes
|
|
60
|
+
trillionths:
|
|
61
|
+
one: billionième
|
|
62
|
+
other: billionièmes
|
|
63
|
+
quadrillionths:
|
|
64
|
+
one: billiardième
|
|
65
|
+
other: billiardièmes
|
|
66
|
+
quintillionths:
|
|
67
|
+
one: trillionième
|
|
68
|
+
other: trillionièmes
|
|
69
|
+
sextillionths:
|
|
70
|
+
one: trilliardième
|
|
71
|
+
other: trilliardièmes
|
|
72
|
+
septillionths:
|
|
73
|
+
one: quadrillionième
|
|
74
|
+
other: quadrillionièmes
|
|
75
|
+
octillionths:
|
|
76
|
+
one: quadrilliardième
|
|
77
|
+
other: quadrilliardièmes
|
|
78
|
+
nonillionths:
|
|
79
|
+
one: quintillionième
|
|
80
|
+
other: quintillionièmes
|
|
81
|
+
decillionths:
|
|
82
|
+
one: quintilliardième
|
|
83
|
+
other: quintilliardièmes
|
|
84
|
+
undecillionths:
|
|
85
|
+
one: sextillionième
|
|
86
|
+
other: sextillionièmes
|
|
87
|
+
duodecillionths:
|
|
88
|
+
one: sextilliardième
|
|
89
|
+
other: sextilliardièmes
|
|
90
|
+
tredecillionths:
|
|
91
|
+
one: septillionième
|
|
92
|
+
other: septillionièmes
|
|
93
|
+
quattuordecillionths:
|
|
94
|
+
one: septilliardième
|
|
95
|
+
other: septilliardièmes
|
|
96
|
+
micro_separator: et
|
|
97
|
+
micro_prefix:
|
|
98
|
+
tens: dix
|
|
99
|
+
hundreds: cent
|
|
100
|
+
union: '-'
|
|
101
|
+
union: et
|
|
@@ -8,3 +8,48 @@ nl:
|
|
|
8
8
|
mega: [_, duizend, miljoen, miljard, biljoen, biljard, triljoen, triljard, septiljoen, octillion, noniljoen, decillion]
|
|
9
9
|
union: en
|
|
10
10
|
union2or3: ën
|
|
11
|
+
micro: [_, tienden, honderdsten, duizendsten, miljoensten, miljardsten, biljoensten, biljardsten, triljoensten, triljardsten, septiljoensten, octillionsten, noniljoensten, decillionsten]
|
|
12
|
+
tienden:
|
|
13
|
+
one: tiende
|
|
14
|
+
other: tienden
|
|
15
|
+
honderdsten:
|
|
16
|
+
one: honderdste
|
|
17
|
+
other: honderdsten
|
|
18
|
+
duizendsten:
|
|
19
|
+
one: duizendste
|
|
20
|
+
other: duizendsten
|
|
21
|
+
miljoensten:
|
|
22
|
+
one: miljoenste
|
|
23
|
+
other: miljoensten
|
|
24
|
+
miljardsten:
|
|
25
|
+
one: miljardste
|
|
26
|
+
other: miljardsten
|
|
27
|
+
biljoensten:
|
|
28
|
+
one: biljoenste
|
|
29
|
+
other: biljoensten
|
|
30
|
+
biljardsten:
|
|
31
|
+
one: biljardste
|
|
32
|
+
other: biljardsten
|
|
33
|
+
triljoensten:
|
|
34
|
+
one: triljoenste
|
|
35
|
+
other: triljoensten
|
|
36
|
+
triljardsten:
|
|
37
|
+
one: triljardste
|
|
38
|
+
other: triljardsten
|
|
39
|
+
septiljoensten:
|
|
40
|
+
one: septiljoenste
|
|
41
|
+
other: septiljoensten
|
|
42
|
+
octillionsten:
|
|
43
|
+
one: octillionste
|
|
44
|
+
other: octillionsten
|
|
45
|
+
noniljoensten:
|
|
46
|
+
one: noniljoenste
|
|
47
|
+
other: noniljoensten
|
|
48
|
+
decillionsten:
|
|
49
|
+
one: decillionste
|
|
50
|
+
other: decillionsten
|
|
51
|
+
micro_separator: komma
|
|
52
|
+
micro_prefix:
|
|
53
|
+
tens: tien
|
|
54
|
+
hundreds: honderd
|
|
55
|
+
union: ''
|
|
@@ -8,7 +8,7 @@ module NumbersAndWords
|
|
|
8
8
|
module_function
|
|
9
9
|
|
|
10
10
|
def languages
|
|
11
|
-
@languages ||=
|
|
11
|
+
@languages ||= locale_files.map { |path| path.split(%r{[/.]})[-2].to_sym }
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def local_language(locale = ::I18n.locale)
|
|
@@ -8,12 +8,14 @@ require 'numbers_and_words/strategies/array_joiner/languages/en'
|
|
|
8
8
|
require 'numbers_and_words/strategies/array_joiner/languages/en-GB'
|
|
9
9
|
require 'numbers_and_words/strategies/array_joiner/languages/es'
|
|
10
10
|
require 'numbers_and_words/strategies/array_joiner/languages/fr'
|
|
11
|
+
require 'numbers_and_words/strategies/array_joiner/languages/fr-CH'
|
|
11
12
|
require 'numbers_and_words/strategies/array_joiner/languages/hu'
|
|
12
13
|
require 'numbers_and_words/strategies/array_joiner/languages/ru'
|
|
13
14
|
require 'numbers_and_words/strategies/array_joiner/languages/ua'
|
|
14
15
|
require 'numbers_and_words/strategies/array_joiner/languages/pt-BR'
|
|
15
16
|
require 'numbers_and_words/strategies/array_joiner/languages/cs'
|
|
16
17
|
require 'numbers_and_words/strategies/array_joiner/languages/vi'
|
|
18
|
+
require 'numbers_and_words/strategies/array_joiner/languages/nl'
|
|
17
19
|
|
|
18
20
|
module NumbersAndWords
|
|
19
21
|
module Strategies
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/fr-CH/base'
|
|
4
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/fr-CH/fractional'
|
|
5
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/fr-CH/integral'
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NumbersAndWords
|
|
4
|
+
module Strategies
|
|
5
|
+
module FiguresConverter
|
|
6
|
+
module Decorators
|
|
7
|
+
module Nl
|
|
8
|
+
class Fractional < Base
|
|
9
|
+
def run
|
|
10
|
+
@strategy.options.options[:fractional_numeral] = true
|
|
11
|
+
"#{super} #{fraction_significance}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def fraction_significance
|
|
17
|
+
@strategy.translations.micros full_fraction.fraction_capacity, figures.join.to_i
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def full_fraction
|
|
21
|
+
(0..zero_length).inject(figures.clone) { |result, _el| result.unshift 0 }.to_figures
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def figures
|
|
25
|
+
@strategy.figures.reverse
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def zero_length
|
|
29
|
+
fraction_length - figures.length
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def fraction_length
|
|
33
|
+
@options[:fractional][:length].to_i
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NumbersAndWords
|
|
4
|
+
module Strategies
|
|
5
|
+
module FiguresConverter
|
|
6
|
+
module Decorators
|
|
7
|
+
module Nl
|
|
8
|
+
class Integral < Base
|
|
9
|
+
def run
|
|
10
|
+
return '' if @options[:remove_zero] && @strategy.figures.all?(&:zero?)
|
|
11
|
+
|
|
12
|
+
super
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/nl/base'
|
|
4
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/nl/fractional'
|
|
5
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/nl/integral'
|
|
@@ -5,12 +5,14 @@ require 'numbers_and_words/strategies/figures_converter/decorators/en'
|
|
|
5
5
|
require 'numbers_and_words/strategies/figures_converter/decorators/en-GB'
|
|
6
6
|
require 'numbers_and_words/strategies/figures_converter/decorators/es'
|
|
7
7
|
require 'numbers_and_words/strategies/figures_converter/decorators/fr'
|
|
8
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/fr-CH'
|
|
8
9
|
require 'numbers_and_words/strategies/figures_converter/decorators/ru'
|
|
9
10
|
require 'numbers_and_words/strategies/figures_converter/decorators/pt-BR'
|
|
10
11
|
require 'numbers_and_words/strategies/figures_converter/decorators/hu'
|
|
11
12
|
require 'numbers_and_words/strategies/figures_converter/decorators/ua'
|
|
12
13
|
require 'numbers_and_words/strategies/figures_converter/decorators/cs'
|
|
13
14
|
require 'numbers_and_words/strategies/figures_converter/decorators/vi'
|
|
15
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/nl'
|
|
14
16
|
|
|
15
17
|
module NumbersAndWords
|
|
16
18
|
module Strategies
|
|
@@ -18,14 +18,34 @@ module NumbersAndWords
|
|
|
18
18
|
capacity_words.empty? ? [] : [capacity_words, megs].join
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
def ones(*args)
|
|
22
|
+
super({ fractional_numeral: @options.options[:fractional_numeral] }.merge(args.first || {}))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def tens_with_ones(*args)
|
|
26
|
+
super({ fractional_numeral: @options.options[:fractional_numeral] }.merge(args.first || {}))
|
|
27
|
+
end
|
|
28
|
+
|
|
21
29
|
def simple_number_to_words
|
|
22
|
-
if @figures.only_ones && @figures.ones == 1
|
|
30
|
+
if @figures.only_ones && @figures.ones == 1 && !@options.options[:fractional_numeral]
|
|
23
31
|
[@translations.t(:loose_one)]
|
|
24
32
|
else
|
|
25
33
|
super
|
|
26
34
|
end
|
|
27
35
|
end
|
|
28
36
|
|
|
37
|
+
def zero
|
|
38
|
+
return nil if maybe_remove_zero
|
|
39
|
+
|
|
40
|
+
super
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def maybe_remove_zero
|
|
46
|
+
@options.remove_zero&.result
|
|
47
|
+
end
|
|
48
|
+
|
|
29
49
|
def number_without_capacity_to_words
|
|
30
50
|
return super unless apply_tens_of_hundreds?
|
|
31
51
|
|
|
@@ -36,8 +56,6 @@ module NumbersAndWords
|
|
|
36
56
|
[([base, translate(:hundreds, 1)] + simple_number_to_words).join]
|
|
37
57
|
end
|
|
38
58
|
|
|
39
|
-
private
|
|
40
|
-
|
|
41
59
|
def apply_tens_of_hundreds?
|
|
42
60
|
@options.tens_of_hundreds.result &&
|
|
43
61
|
(1..9).cover?(figures.number_in_capacity(FiguresArray::THOUSAND_CAPACITY)) &&
|
|
@@ -7,19 +7,19 @@ module NumbersAndWords
|
|
|
7
7
|
class Vi < Base
|
|
8
8
|
def print_words
|
|
9
9
|
value = super
|
|
10
|
-
|
|
10
|
+
remove_billion_noise(value)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def strings_logic
|
|
14
14
|
if fractional?
|
|
15
15
|
if fraction_number_zeros_leading.zero?
|
|
16
|
-
@options.options[:
|
|
17
|
-
|
|
16
|
+
@options.options[:integral] = true
|
|
17
|
+
integral_string_logic
|
|
18
18
|
else
|
|
19
19
|
fractional_with_zero_leading_string_logic
|
|
20
20
|
end
|
|
21
21
|
else
|
|
22
|
-
|
|
22
|
+
integral_string_logic
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
|
|
@@ -28,7 +28,7 @@ module NumbersAndWords
|
|
|
28
28
|
(@figures + leading_zeros).map(&:to_words)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def
|
|
31
|
+
def integral_string_logic
|
|
32
32
|
if @figures.capacity_count
|
|
33
33
|
number_without_capacity_to_words + complex_number_to_words
|
|
34
34
|
elsif hundreds?
|
|
@@ -66,7 +66,7 @@ module NumbersAndWords
|
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
def fractional?
|
|
69
|
-
!@options.options[:fractional].nil? && !@options.options[:
|
|
69
|
+
!@options.options[:fractional].nil? && !@options.options[:integral]
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
def fraction_length
|
|
@@ -79,7 +79,7 @@ module NumbersAndWords
|
|
|
79
79
|
fraction_length - @figures.length
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
def
|
|
82
|
+
def remove_billion_noise(value)
|
|
83
83
|
parts = value.split(billion_unit).map(&:strip)
|
|
84
84
|
if value.end_with?(billion_unit)
|
|
85
85
|
parts.insert(-1, billion_unit).join(' ')
|
|
@@ -11,6 +11,7 @@ require 'numbers_and_words/strategies/figures_converter/languages/en-GB'
|
|
|
11
11
|
require 'numbers_and_words/strategies/figures_converter/languages/es'
|
|
12
12
|
require 'numbers_and_words/strategies/figures_converter/languages/et'
|
|
13
13
|
require 'numbers_and_words/strategies/figures_converter/languages/fr'
|
|
14
|
+
require 'numbers_and_words/strategies/figures_converter/languages/fr-CH'
|
|
14
15
|
require 'numbers_and_words/strategies/figures_converter/languages/hu'
|
|
15
16
|
require 'numbers_and_words/strategies/figures_converter/languages/it'
|
|
16
17
|
require 'numbers_and_words/strategies/figures_converter/languages/ka'
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module NumbersAndWords
|
|
4
|
+
module Translations
|
|
5
|
+
class FrCh < Base
|
|
6
|
+
include NumbersAndWords::Translations::Families::Latin
|
|
7
|
+
include NumbersAndWords::Translations::Extensions::FractionSignificance
|
|
8
|
+
|
|
9
|
+
def tens(number, options = {})
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def tens_with_ones(numbers, options = {})
|
|
14
|
+
separator = numbers.first == 1 ? " #{union} " : '-'
|
|
15
|
+
super(numbers, options.merge(separator:))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def hundreds(number, options = {})
|
|
19
|
+
count = options[:pluralize] ? number : 1
|
|
20
|
+
hundreds = t(:hundreds, count:)
|
|
21
|
+
|
|
22
|
+
return hundreds if number == 1
|
|
23
|
+
|
|
24
|
+
[t(:ones)[number], hundreds].join(' ')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -4,9 +4,19 @@ module NumbersAndWords
|
|
|
4
4
|
module Translations
|
|
5
5
|
class Nl < Base
|
|
6
6
|
include NumbersAndWords::Translations::Families::Latin
|
|
7
|
+
include NumbersAndWords::Translations::Extensions::FractionSignificance
|
|
7
8
|
|
|
8
|
-
def
|
|
9
|
-
|
|
9
|
+
def ones(number, options = {})
|
|
10
|
+
# In fractional context, use "een" instead of "één" for number 1
|
|
11
|
+
if number == 1 && options[:fractional_numeral]
|
|
12
|
+
t(:ones)[1] # "een" is at index 1 in the ones array
|
|
13
|
+
else
|
|
14
|
+
super
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def tens_with_ones(numbers, options = {})
|
|
19
|
+
[ones(numbers[0], options), tens(numbers[1])].join(union(numbers[0]))
|
|
10
20
|
end
|
|
11
21
|
|
|
12
22
|
def hundreds(number, _options = {})
|
|
@@ -5,6 +5,7 @@ module NumbersAndWords
|
|
|
5
5
|
class Vi < Base
|
|
6
6
|
include NumbersAndWords::Translations::Families::Latin
|
|
7
7
|
include NumbersAndWords::Translations::Extensions::FractionSignificance
|
|
8
|
+
|
|
8
9
|
def ones_of_tens(number, options = {})
|
|
9
10
|
return t('units.tens.one') if number == 1
|
|
10
11
|
return t('units.tens.five') if number == 5
|
|
@@ -11,6 +11,7 @@ require 'numbers_and_words/translations/en-GB'
|
|
|
11
11
|
require 'numbers_and_words/translations/ua'
|
|
12
12
|
require 'numbers_and_words/translations/tr'
|
|
13
13
|
require 'numbers_and_words/translations/fr'
|
|
14
|
+
require 'numbers_and_words/translations/fr-CH'
|
|
14
15
|
require 'numbers_and_words/translations/nl'
|
|
15
16
|
require 'numbers_and_words/translations/it'
|
|
16
17
|
require 'numbers_and_words/translations/hu'
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: numbers_and_words
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kirill Lazarev
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: i18n
|
|
@@ -95,6 +95,7 @@ files:
|
|
|
95
95
|
- lib/numbers_and_words/i18n/locales/numbers.en.yml
|
|
96
96
|
- lib/numbers_and_words/i18n/locales/numbers.es.yml
|
|
97
97
|
- lib/numbers_and_words/i18n/locales/numbers.et.yml
|
|
98
|
+
- lib/numbers_and_words/i18n/locales/numbers.fr-CH.yml
|
|
98
99
|
- lib/numbers_and_words/i18n/locales/numbers.fr.yml
|
|
99
100
|
- lib/numbers_and_words/i18n/locales/numbers.hu.yml
|
|
100
101
|
- lib/numbers_and_words/i18n/locales/numbers.hy.yml
|
|
@@ -127,8 +128,10 @@ files:
|
|
|
127
128
|
- lib/numbers_and_words/strategies/array_joiner/languages/en.rb
|
|
128
129
|
- lib/numbers_and_words/strategies/array_joiner/languages/es.rb
|
|
129
130
|
- lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb
|
|
131
|
+
- lib/numbers_and_words/strategies/array_joiner/languages/fr-CH.rb
|
|
130
132
|
- lib/numbers_and_words/strategies/array_joiner/languages/fr.rb
|
|
131
133
|
- lib/numbers_and_words/strategies/array_joiner/languages/hu.rb
|
|
134
|
+
- lib/numbers_and_words/strategies/array_joiner/languages/nl.rb
|
|
132
135
|
- lib/numbers_and_words/strategies/array_joiner/languages/pt-BR.rb
|
|
133
136
|
- lib/numbers_and_words/strategies/array_joiner/languages/ru.rb
|
|
134
137
|
- lib/numbers_and_words/strategies/array_joiner/languages/ua.rb
|
|
@@ -152,6 +155,10 @@ files:
|
|
|
152
155
|
- lib/numbers_and_words/strategies/figures_converter/decorators/es/base.rb
|
|
153
156
|
- lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb
|
|
154
157
|
- lib/numbers_and_words/strategies/figures_converter/decorators/es/integral.rb
|
|
158
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH.rb
|
|
159
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH/base.rb
|
|
160
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH/fractional.rb
|
|
161
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/fr-CH/integral.rb
|
|
155
162
|
- lib/numbers_and_words/strategies/figures_converter/decorators/fr.rb
|
|
156
163
|
- lib/numbers_and_words/strategies/figures_converter/decorators/fr/base.rb
|
|
157
164
|
- lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb
|
|
@@ -160,6 +167,10 @@ files:
|
|
|
160
167
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/base.rb
|
|
161
168
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb
|
|
162
169
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/integral.rb
|
|
170
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl.rb
|
|
171
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl/base.rb
|
|
172
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb
|
|
173
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl/integral.rb
|
|
163
174
|
- lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR.rb
|
|
164
175
|
- lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/base.rb
|
|
165
176
|
- lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb
|
|
@@ -188,6 +199,7 @@ files:
|
|
|
188
199
|
- lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb
|
|
189
200
|
- lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb
|
|
190
201
|
- lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb
|
|
202
|
+
- lib/numbers_and_words/strategies/figures_converter/languages/fr-CH.rb
|
|
191
203
|
- lib/numbers_and_words/strategies/figures_converter/languages/fr.rb
|
|
192
204
|
- lib/numbers_and_words/strategies/figures_converter/languages/hu.rb
|
|
193
205
|
- lib/numbers_and_words/strategies/figures_converter/languages/hy.rb
|
|
@@ -256,6 +268,7 @@ files:
|
|
|
256
268
|
- lib/numbers_and_words/translations/families/base.rb
|
|
257
269
|
- lib/numbers_and_words/translations/families/cyrillic.rb
|
|
258
270
|
- lib/numbers_and_words/translations/families/latin.rb
|
|
271
|
+
- lib/numbers_and_words/translations/fr-CH.rb
|
|
259
272
|
- lib/numbers_and_words/translations/fr.rb
|
|
260
273
|
- lib/numbers_and_words/translations/hu.rb
|
|
261
274
|
- lib/numbers_and_words/translations/hy.rb
|
|
@@ -294,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
294
307
|
- !ruby/object:Gem::Version
|
|
295
308
|
version: '0'
|
|
296
309
|
requirements: []
|
|
297
|
-
rubygems_version:
|
|
310
|
+
rubygems_version: 4.0.3
|
|
298
311
|
specification_version: 4
|
|
299
312
|
summary: Spell out numbers in several languages
|
|
300
313
|
test_files: []
|