numbers_and_words 1.0.1 → 1.0.2
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 +8 -3
- data/README.rdoc +11 -1
- data/lib/numbers_and_words/i18n/locales/numbers.nl.yml +45 -0
- data/lib/numbers_and_words/strategies/array_joiner/languages/nl.rb +12 -0
- data/lib/numbers_and_words/strategies/array_joiner/languages.rb +1 -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 +1 -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/translations/nl.rb +12 -2
- data/lib/numbers_and_words/version.rb +1 -1
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d612787bffd49001ca0a53639182c25282a62d6bce6ed64102e404a01bb0a42a
|
4
|
+
data.tar.gz: 7f66649bed55c361ff6ea98ea230601e2304302a5a23cbca3003419fdadbb83a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 32e0e1aff9acaba88b7f073ef25850e4cec84f872ee28f420ad2370c3b0d90d12e2190a30c88cee81f697729f38d9c3ca18bdfe05ff1ce6a8844e96efa1c7cd5
|
7
|
+
data.tar.gz: 2fee47dcc8cf1e9863f3061c20fa4112dcff5782b397c161e9a76f7a46b55da5e669a2772206e4aaa2f0e2e7c936bb9201ea130261a364c5514718f826d304fc
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
-
## 1.
|
1
|
+
## 1.0.3 (Next)
|
2
2
|
|
3
3
|
### Features
|
4
4
|
* Your contribution here.
|
5
5
|
|
6
|
+
## 1.0.2 (Next)
|
7
|
+
|
8
|
+
### Features
|
9
|
+
* Add support for Dutch floating-point numbers. \[[#207](https://github.com/kslazarev/numbers_and_words/pull/207)\]
|
10
|
+
|
6
11
|
## 1.0.1 (March 7, 2025)
|
7
12
|
|
8
13
|
### Features
|
@@ -154,7 +159,7 @@
|
|
154
159
|
* 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
160
|
|
156
161
|
### Bugs
|
157
|
-
* Fix
|
162
|
+
* 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
163
|
|
159
164
|
### Supports
|
160
165
|
* 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 +201,7 @@
|
|
196
201
|
## 0.6.0 (March 25, 2013)
|
197
202
|
|
198
203
|
### Features
|
199
|
-
* Support fractional form for
|
204
|
+
* 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
205
|
* 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
206
|
* 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
207
|
* 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
@@ -285,7 +285,7 @@ Deletrea números en varios idiomas utilizando la gema I18n.
|
|
285
285
|
I18n.with_locale(:ru) { 1001.to_words gender: :neuter }
|
286
286
|
=> "одна тысяча одно"
|
287
287
|
|
288
|
-
*
|
288
|
+
* Ukrainian
|
289
289
|
|
290
290
|
Change gender form: (gender: [:female || :male || :neuter])
|
291
291
|
|
@@ -373,6 +373,16 @@ Deletrea números en varios idiomas utilizando la gema I18n.
|
|
373
373
|
I18n.with_locale(:da) { 1.to_words gender: :neuter }
|
374
374
|
=> "et"
|
375
375
|
|
376
|
+
* Dutch
|
377
|
+
|
378
|
+
Remove 'zero' from integral part of float: (remove_zero: [true || false])
|
379
|
+
|
380
|
+
I18n.with_locale(:nl) { 0.7.to_words remove_zero: true }
|
381
|
+
=> "zeven tienden"
|
382
|
+
|
383
|
+
I18n.with_locale(:nl) { 0.7.to_words remove_zero: false }
|
384
|
+
=> "nul komma zeven tienden"
|
385
|
+
|
376
386
|
== Other options / Другие опции
|
377
387
|
|
378
388
|
* Precision
|
@@ -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: ''
|
@@ -14,6 +14,7 @@ require 'numbers_and_words/strategies/array_joiner/languages/ua'
|
|
14
14
|
require 'numbers_and_words/strategies/array_joiner/languages/pt-BR'
|
15
15
|
require 'numbers_and_words/strategies/array_joiner/languages/cs'
|
16
16
|
require 'numbers_and_words/strategies/array_joiner/languages/vi'
|
17
|
+
require 'numbers_and_words/strategies/array_joiner/languages/nl'
|
17
18
|
|
18
19
|
module NumbersAndWords
|
19
20
|
module Strategies
|
@@ -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'
|
@@ -11,6 +11,7 @@ require 'numbers_and_words/strategies/figures_converter/decorators/hu'
|
|
11
11
|
require 'numbers_and_words/strategies/figures_converter/decorators/ua'
|
12
12
|
require 'numbers_and_words/strategies/figures_converter/decorators/cs'
|
13
13
|
require 'numbers_and_words/strategies/figures_converter/decorators/vi'
|
14
|
+
require 'numbers_and_words/strategies/figures_converter/decorators/nl'
|
14
15
|
|
15
16
|
module NumbersAndWords
|
16
17
|
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(' ')
|
@@ -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 = {})
|
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.2
|
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
|
@@ -129,6 +129,7 @@ files:
|
|
129
129
|
- lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb
|
130
130
|
- lib/numbers_and_words/strategies/array_joiner/languages/fr.rb
|
131
131
|
- lib/numbers_and_words/strategies/array_joiner/languages/hu.rb
|
132
|
+
- lib/numbers_and_words/strategies/array_joiner/languages/nl.rb
|
132
133
|
- lib/numbers_and_words/strategies/array_joiner/languages/pt-BR.rb
|
133
134
|
- lib/numbers_and_words/strategies/array_joiner/languages/ru.rb
|
134
135
|
- lib/numbers_and_words/strategies/array_joiner/languages/ua.rb
|
@@ -160,6 +161,10 @@ files:
|
|
160
161
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/base.rb
|
161
162
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb
|
162
163
|
- lib/numbers_and_words/strategies/figures_converter/decorators/hu/integral.rb
|
164
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl.rb
|
165
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl/base.rb
|
166
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb
|
167
|
+
- lib/numbers_and_words/strategies/figures_converter/decorators/nl/integral.rb
|
163
168
|
- lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR.rb
|
164
169
|
- lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/base.rb
|
165
170
|
- lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb
|
@@ -294,7 +299,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
294
299
|
- !ruby/object:Gem::Version
|
295
300
|
version: '0'
|
296
301
|
requirements: []
|
297
|
-
rubygems_version: 3.6.
|
302
|
+
rubygems_version: 3.6.9
|
298
303
|
specification_version: 4
|
299
304
|
summary: Spell out numbers in several languages
|
300
305
|
test_files: []
|