numbers_and_words 1.0.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d612787bffd49001ca0a53639182c25282a62d6bce6ed64102e404a01bb0a42a
4
- data.tar.gz: 7f66649bed55c361ff6ea98ea230601e2304302a5a23cbca3003419fdadbb83a
3
+ metadata.gz: a2463adcfe14855e68f922f5d1a36844542f6d679d7a07c48e7db1f6913154ae
4
+ data.tar.gz: 25112807d5a331f3935ae9bdc92e26668a5ff77298599df412bfc2e9094ef92b
5
5
  SHA512:
6
- metadata.gz: 32e0e1aff9acaba88b7f073ef25850e4cec84f872ee28f420ad2370c3b0d90d12e2190a30c88cee81f697729f38d9c3ca18bdfe05ff1ce6a8844e96efa1c7cd5
7
- data.tar.gz: 2fee47dcc8cf1e9863f3061c20fa4112dcff5782b397c161e9a76f7a46b55da5e669a2772206e4aaa2f0e2e7c936bb9201ea130261a364c5514718f826d304fc
6
+ metadata.gz: f810b928a2f564b6051b1964ee3fa4970db403bdac92c0b93194713e51e211277f3470fc14bd47974aeb6ebf8cddc916d9cfdb08424259de84338b2d3c3b6f00
7
+ data.tar.gz: 13272058723519b964a39bbf41c5a8774d21a8e19e45111bda6d883bab1925def49003e36ab897a7d2d91d220d69b1cd391589b94d0f6f86f865d42e69be73a3
data/CHANGELOG.md CHANGED
@@ -1,9 +1,15 @@
1
- ## 1.0.3 (Next)
1
+ ## 1.0.4 (Next)
2
2
 
3
3
  ### Features
4
4
  * Your contribution here.
5
5
 
6
- ## 1.0.2 (Next)
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)
7
13
 
8
14
  ### Features
9
15
  * Add support for Dutch floating-point numbers. \[[#207](https://github.com/kslazarev/numbers_and_words/pull/207)\]
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], [fr-CH]}*** => [fr]
51
+ * {[fr-CA]}*** => [fr]
51
52
  * {[de], [de-AT], [de-CH]}*** => [de]
52
53
  * {[it-CH]}*** => [it]
53
54
 
@@ -35,7 +35,7 @@ module NumbersAndWords
35
35
  end
36
36
 
37
37
  def figures_array_under_capacity(capacity)
38
- self[0..(capacity * FIGURES_IN_CAPACITY) - ONES_SHIFT]
38
+ self[0..((capacity * FIGURES_IN_CAPACITY) - ONES_SHIFT)]
39
39
  end
40
40
 
41
41
  def ones
@@ -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,7 +8,7 @@ module NumbersAndWords
8
8
  module_function
9
9
 
10
10
  def languages
11
- @languages ||= (locale_files.map { |path| path.split(%r{[/.]})[-2].to_sym })
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)
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NumbersAndWords
4
+ module Strategies
5
+ module ArrayJoiner
6
+ module Languages
7
+ class FrCh < Base
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -8,6 +8,7 @@ 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'
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NumbersAndWords
4
+ module Strategies
5
+ module FiguresConverter
6
+ module Decorators
7
+ module FrCh
8
+ class Base < Fr::Base
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NumbersAndWords
4
+ module Strategies
5
+ module FiguresConverter
6
+ module Decorators
7
+ module FrCh
8
+ class Fractional < Fr::Fractional
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NumbersAndWords
4
+ module Strategies
5
+ module FiguresConverter
6
+ module Decorators
7
+ module FrCh
8
+ class Integral < Fr::Integral
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -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'
@@ -5,6 +5,7 @@ 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'
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module NumbersAndWords
4
+ module Strategies
5
+ module FiguresConverter
6
+ module Languages
7
+ class FrCh < Fr
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -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'
@@ -6,7 +6,7 @@ module NumbersAndWords
6
6
  I18N_NAMESPACE = :numbers
7
7
 
8
8
  def t(attribute, options = {})
9
- ::I18n.t attribute, **options.merge(scope: I18N_NAMESPACE)
9
+ ::I18n.t attribute, **options, scope: I18N_NAMESPACE
10
10
  end
11
11
  end
12
12
  end
@@ -4,6 +4,7 @@ module NumbersAndWords
4
4
  module Translations
5
5
  class De < Base
6
6
  include NumbersAndWords::Translations::Families::Base
7
+
7
8
  DEFAULT_POSTFIX = :combine
8
9
 
9
10
  def ones(number, options = {})
@@ -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,6 +4,7 @@ module NumbersAndWords
4
4
  module Translations
5
5
  class Ka < Base
6
6
  include NumbersAndWords::Translations::Families::Latin
7
+
7
8
  TENS_VIGESIMAL_RANGES = [
8
9
  {
9
10
  range: Range.new(0, 4, true),
@@ -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'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module NumbersAndWords
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numbers_and_words
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirill Lazarev
@@ -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,6 +128,7 @@ 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
132
134
  - lib/numbers_and_words/strategies/array_joiner/languages/nl.rb
@@ -153,6 +155,10 @@ files:
153
155
  - lib/numbers_and_words/strategies/figures_converter/decorators/es/base.rb
154
156
  - lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb
155
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
156
162
  - lib/numbers_and_words/strategies/figures_converter/decorators/fr.rb
157
163
  - lib/numbers_and_words/strategies/figures_converter/decorators/fr/base.rb
158
164
  - lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb
@@ -193,6 +199,7 @@ files:
193
199
  - lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb
194
200
  - lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb
195
201
  - lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb
202
+ - lib/numbers_and_words/strategies/figures_converter/languages/fr-CH.rb
196
203
  - lib/numbers_and_words/strategies/figures_converter/languages/fr.rb
197
204
  - lib/numbers_and_words/strategies/figures_converter/languages/hu.rb
198
205
  - lib/numbers_and_words/strategies/figures_converter/languages/hy.rb
@@ -261,6 +268,7 @@ files:
261
268
  - lib/numbers_and_words/translations/families/base.rb
262
269
  - lib/numbers_and_words/translations/families/cyrillic.rb
263
270
  - lib/numbers_and_words/translations/families/latin.rb
271
+ - lib/numbers_and_words/translations/fr-CH.rb
264
272
  - lib/numbers_and_words/translations/fr.rb
265
273
  - lib/numbers_and_words/translations/hu.rb
266
274
  - lib/numbers_and_words/translations/hy.rb
@@ -299,7 +307,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
299
307
  - !ruby/object:Gem::Version
300
308
  version: '0'
301
309
  requirements: []
302
- rubygems_version: 3.6.9
310
+ rubygems_version: 4.0.3
303
311
  specification_version: 4
304
312
  summary: Spell out numbers in several languages
305
313
  test_files: []