num2words 0.1.0 → 0.1.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.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/CHANGELOG.md +71 -0
  4. data/Gemfile +1 -0
  5. data/README.md +105 -82
  6. data/bin/console +1 -1
  7. data/config/locales/ar.yml +36 -0
  8. data/config/locales/be.yml +31 -0
  9. data/config/locales/bg.yml +31 -0
  10. data/config/locales/bn.yml +26 -0
  11. data/config/locales/cs.yml +31 -0
  12. data/config/locales/da.yml +31 -0
  13. data/config/locales/de.yml +31 -0
  14. data/config/locales/el.yml +36 -0
  15. data/config/locales/en.yml +41 -0
  16. data/config/locales/es.yml +31 -0
  17. data/config/locales/et.yml +26 -0
  18. data/config/locales/fa.yml +31 -0
  19. data/config/locales/fi.yml +26 -0
  20. data/config/locales/fr.yml +31 -0
  21. data/config/locales/gu.yml +26 -0
  22. data/config/locales/he.yml +36 -0
  23. data/config/locales/hi.yml +31 -0
  24. data/config/locales/hr.yml +31 -0
  25. data/config/locales/hu.yml +31 -0
  26. data/config/locales/id.yml +31 -0
  27. data/config/locales/it.yml +31 -0
  28. data/config/locales/ja.yml +31 -0
  29. data/config/locales/kn.yml +26 -0
  30. data/config/locales/ko.yml +31 -0
  31. data/config/locales/kz.yml +36 -0
  32. data/config/locales/lt.yml +26 -0
  33. data/config/locales/lv.yml +26 -0
  34. data/config/locales/ml.yml +26 -0
  35. data/config/locales/mr.yml +26 -0
  36. data/config/locales/ms.yml +26 -0
  37. data/config/locales/nb.yml +36 -0
  38. data/config/locales/nl.yml +31 -0
  39. data/config/locales/pa.yml +26 -0
  40. data/config/locales/pl.yml +31 -0
  41. data/config/locales/pt.yml +31 -0
  42. data/config/locales/ro.yml +31 -0
  43. data/config/locales/ru.yml +36 -0
  44. data/config/locales/sk.yml +26 -0
  45. data/config/locales/sl.yml +26 -0
  46. data/config/locales/sr.yml +31 -0
  47. data/config/locales/sv.yml +33 -0
  48. data/config/locales/sw.yml +26 -0
  49. data/config/locales/ta.yml +26 -0
  50. data/config/locales/te.yml +26 -0
  51. data/config/locales/th.yml +31 -0
  52. data/config/locales/tr.yml +31 -0
  53. data/config/locales/uk.yml +31 -0
  54. data/config/locales/ur.yml +26 -0
  55. data/config/locales/vi.yml +31 -0
  56. data/config/locales/zh.yml +21 -0
  57. data/lib/num2words/converter.rb +97 -59
  58. data/lib/num2words/core_ext.rb +10 -6
  59. data/lib/num2words/i18n.rb +30 -0
  60. data/lib/num2words/locales/ar.rb +19 -0
  61. data/lib/num2words/locales/be.rb +19 -0
  62. data/lib/num2words/locales/bg.rb +19 -0
  63. data/lib/num2words/locales/bn.rb +19 -0
  64. data/lib/num2words/locales/cs.rb +19 -0
  65. data/lib/num2words/locales/da.rb +19 -0
  66. data/lib/num2words/locales/de.rb +19 -0
  67. data/lib/num2words/locales/el.rb +19 -0
  68. data/lib/num2words/locales/en.rb +22 -0
  69. data/lib/num2words/locales/es.rb +19 -0
  70. data/lib/num2words/locales/et.rb +19 -0
  71. data/lib/num2words/locales/fa.rb +19 -0
  72. data/lib/num2words/locales/fi.rb +19 -0
  73. data/lib/num2words/locales/fr.rb +19 -0
  74. data/lib/num2words/locales/gu.rb +19 -0
  75. data/lib/num2words/locales/he.rb +19 -0
  76. data/lib/num2words/locales/hi.rb +19 -0
  77. data/lib/num2words/locales/hr.rb +19 -0
  78. data/lib/num2words/locales/hu.rb +19 -0
  79. data/lib/num2words/locales/id.rb +19 -0
  80. data/lib/num2words/locales/it.rb +19 -0
  81. data/lib/num2words/locales/ja.rb +19 -0
  82. data/lib/num2words/locales/kn.rb +19 -0
  83. data/lib/num2words/locales/ko.rb +19 -0
  84. data/lib/num2words/locales/kz.rb +19 -0
  85. data/lib/num2words/locales/lt.rb +19 -0
  86. data/lib/num2words/locales/lv.rb +19 -0
  87. data/lib/num2words/locales/ml.rb +19 -0
  88. data/lib/num2words/locales/mr.rb +19 -0
  89. data/lib/num2words/locales/ms.rb +19 -0
  90. data/lib/num2words/locales/nl.rb +19 -0
  91. data/lib/num2words/locales/no.rb +19 -0
  92. data/lib/num2words/locales/pa.rb +19 -0
  93. data/lib/num2words/locales/pl.rb +19 -0
  94. data/lib/num2words/locales/pt.rb +19 -0
  95. data/lib/num2words/locales/ro.rb +19 -0
  96. data/lib/num2words/locales/ru.rb +22 -0
  97. data/lib/num2words/locales/sk.rb +19 -0
  98. data/lib/num2words/locales/sl.rb +19 -0
  99. data/lib/num2words/locales/sr.rb +19 -0
  100. data/lib/num2words/locales/sv.rb +19 -0
  101. data/lib/num2words/locales/sw.rb +19 -0
  102. data/lib/num2words/locales/ta.rb +19 -0
  103. data/lib/num2words/locales/te.rb +19 -0
  104. data/lib/num2words/locales/th.rb +19 -0
  105. data/lib/num2words/locales/tr.rb +19 -0
  106. data/lib/num2words/locales/uk.rb +19 -0
  107. data/lib/num2words/locales/ur.rb +19 -0
  108. data/lib/num2words/locales/vi.rb +19 -0
  109. data/lib/num2words/locales/zh.rb +19 -0
  110. data/lib/num2words/locales.rb +33 -0
  111. data/lib/num2words/version.rb +1 -1
  112. data/lib/num2words.rb +6 -4
  113. data/num2words.gemspec +2 -0
  114. metadata +120 -3
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Num2words
4
+ module Locales
5
+ module UR
6
+ ONES_MASC = I18n.t("num2words.ones_masc", locale: :ur)
7
+ ONES_FEM = I18n.t("num2words.ones_fem", locale: :ur)
8
+ TEENS = I18n.t("num2words.teens", locale: :ur)
9
+ TENS = I18n.t("num2words.tens", locale: :ur)
10
+ HUNDREDS = I18n.t("num2words.hundreds", locale: :ur)
11
+ SCALES = I18n.t("num2words.scales", locale: :ur)
12
+
13
+ MAJOR_UNIT = I18n.t("num2words.currencies.PKR.name", locale: :ur)
14
+ MINOR_UNIT = I18n.t("num2words.currencies.PKR.fractional.name", locale: :ur)
15
+ end
16
+
17
+ register :ur, UR
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Num2words
4
+ module Locales
5
+ module VI
6
+ ONES_MASC = I18n.t("num2words.ones_masc", locale: :vi)
7
+ ONES_FEM = I18n.t("num2words.ones_fem", locale: :vi)
8
+ TEENS = I18n.t("num2words.teens", locale: :vi)
9
+ TENS = I18n.t("num2words.tens", locale: :vi)
10
+ HUNDREDS = I18n.t("num2words.hundreds", locale: :vi)
11
+ SCALES = I18n.t("num2words.scales", locale: :vi)
12
+
13
+ MAJOR_UNIT = I18n.t("num2words.currencies.VND.name", locale: :vi)
14
+ MINOR_UNIT = I18n.t("num2words.currencies.VND.fractional.name", locale: :vi)
15
+ end
16
+
17
+ register :vi, VI
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Num2words
4
+ module Locales
5
+ module ZH
6
+ ONES_MASC = I18n.t("num2words.ones_masc", locale: :zh)
7
+ ONES_FEM = I18n.t("num2words.ones_fem", locale: :zh)
8
+ TEENS = I18n.t("num2words.teens", locale: :zh)
9
+ TENS = I18n.t("num2words.tens", locale: :zh)
10
+ HUNDREDS = I18n.t("num2words.hundreds", locale: :zh)
11
+ SCALES = I18n.t("num2words.scales", locale: :zh)
12
+
13
+ MAJOR_UNIT = I18n.t("num2words.currencies.CNY.name", locale: :zh)
14
+ MINOR_UNIT = I18n.t("num2words.currencies.CNY.fractional.name", locale: :zh)
15
+ end
16
+
17
+ register :zh, ZH
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Num2words
4
+ module Locales
5
+ @registry = {}
6
+
7
+ class << self
8
+ # Регистрация новой локали
9
+ def register(locale, mod)
10
+ @registry[locale.to_sym] = mod
11
+ end
12
+
13
+ # Доступ по синтаксису Locales[:ru]
14
+ def [](locale)
15
+ locale = locale.to_sym
16
+ @registry[locale] || autoload_locale(locale)
17
+ end
18
+
19
+ private
20
+
21
+ # Автоматическая подгрузка файла locales/xx.rb
22
+ def autoload_locale(locale)
23
+ locale_path = File.join(__dir__, "locales", "#{locale}.rb")
24
+ if File.exist?(locale_path)
25
+ require locale_path
26
+ @registry[locale] || raise("Locale #{locale} not registered")
27
+ else
28
+ raise ArgumentError, "Locale file not found: #{locale_path}"
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Num2words
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.3"
5
5
  end
data/lib/num2words.rb CHANGED
@@ -1,15 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "num2words/i18n"
3
4
  require_relative "num2words/version"
4
5
  require_relative "num2words/converter"
5
6
  require_relative "num2words/core_ext"
7
+ require_relative "num2words/locales"
6
8
 
7
9
  module Num2words
8
- def self.to_words(number, feminine: false)
9
- Converter.to_words(number, feminine: feminine)
10
+ def self.to_words(number, *args, **opts)
11
+ Converter.to_words(number, *args, **opts)
10
12
  end
11
13
 
12
- def self.to_currency(amount)
13
- Converter.to_currency(amount)
14
+ def self.to_currency(amount, *args, **opts)
15
+ Converter.to_currency(amount, *args, **opts)
14
16
  end
15
17
  end
data/num2words.gemspec CHANGED
@@ -24,4 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.bindir = "exe"
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = ["lib"]
27
+
28
+ spec.add_runtime_dependency "i18n", ">= 1.8"
27
29
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: num2words
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Fedotov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-08-18 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2025-08-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: i18n
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
13
27
  description: Converts integers and amounts to Russian words with proper gender and
14
28
  plural forms.
15
29
  email:
@@ -19,15 +33,118 @@ extensions: []
19
33
  extra_rdoc_files: []
20
34
  files:
21
35
  - ".gitignore"
36
+ - CHANGELOG.md
22
37
  - Gemfile
23
38
  - LICENSE.txt
24
39
  - README.md
25
40
  - Rakefile
26
41
  - bin/console
27
42
  - bin/setup
43
+ - config/locales/ar.yml
44
+ - config/locales/be.yml
45
+ - config/locales/bg.yml
46
+ - config/locales/bn.yml
47
+ - config/locales/cs.yml
48
+ - config/locales/da.yml
49
+ - config/locales/de.yml
50
+ - config/locales/el.yml
51
+ - config/locales/en.yml
52
+ - config/locales/es.yml
53
+ - config/locales/et.yml
54
+ - config/locales/fa.yml
55
+ - config/locales/fi.yml
56
+ - config/locales/fr.yml
57
+ - config/locales/gu.yml
58
+ - config/locales/he.yml
59
+ - config/locales/hi.yml
60
+ - config/locales/hr.yml
61
+ - config/locales/hu.yml
62
+ - config/locales/id.yml
63
+ - config/locales/it.yml
64
+ - config/locales/ja.yml
65
+ - config/locales/kn.yml
66
+ - config/locales/ko.yml
67
+ - config/locales/kz.yml
68
+ - config/locales/lt.yml
69
+ - config/locales/lv.yml
70
+ - config/locales/ml.yml
71
+ - config/locales/mr.yml
72
+ - config/locales/ms.yml
73
+ - config/locales/nb.yml
74
+ - config/locales/nl.yml
75
+ - config/locales/pa.yml
76
+ - config/locales/pl.yml
77
+ - config/locales/pt.yml
78
+ - config/locales/ro.yml
79
+ - config/locales/ru.yml
80
+ - config/locales/sk.yml
81
+ - config/locales/sl.yml
82
+ - config/locales/sr.yml
83
+ - config/locales/sv.yml
84
+ - config/locales/sw.yml
85
+ - config/locales/ta.yml
86
+ - config/locales/te.yml
87
+ - config/locales/th.yml
88
+ - config/locales/tr.yml
89
+ - config/locales/uk.yml
90
+ - config/locales/ur.yml
91
+ - config/locales/vi.yml
92
+ - config/locales/zh.yml
28
93
  - lib/num2words.rb
29
94
  - lib/num2words/converter.rb
30
95
  - lib/num2words/core_ext.rb
96
+ - lib/num2words/i18n.rb
97
+ - lib/num2words/locales.rb
98
+ - lib/num2words/locales/ar.rb
99
+ - lib/num2words/locales/be.rb
100
+ - lib/num2words/locales/bg.rb
101
+ - lib/num2words/locales/bn.rb
102
+ - lib/num2words/locales/cs.rb
103
+ - lib/num2words/locales/da.rb
104
+ - lib/num2words/locales/de.rb
105
+ - lib/num2words/locales/el.rb
106
+ - lib/num2words/locales/en.rb
107
+ - lib/num2words/locales/es.rb
108
+ - lib/num2words/locales/et.rb
109
+ - lib/num2words/locales/fa.rb
110
+ - lib/num2words/locales/fi.rb
111
+ - lib/num2words/locales/fr.rb
112
+ - lib/num2words/locales/gu.rb
113
+ - lib/num2words/locales/he.rb
114
+ - lib/num2words/locales/hi.rb
115
+ - lib/num2words/locales/hr.rb
116
+ - lib/num2words/locales/hu.rb
117
+ - lib/num2words/locales/id.rb
118
+ - lib/num2words/locales/it.rb
119
+ - lib/num2words/locales/ja.rb
120
+ - lib/num2words/locales/kn.rb
121
+ - lib/num2words/locales/ko.rb
122
+ - lib/num2words/locales/kz.rb
123
+ - lib/num2words/locales/lt.rb
124
+ - lib/num2words/locales/lv.rb
125
+ - lib/num2words/locales/ml.rb
126
+ - lib/num2words/locales/mr.rb
127
+ - lib/num2words/locales/ms.rb
128
+ - lib/num2words/locales/nl.rb
129
+ - lib/num2words/locales/no.rb
130
+ - lib/num2words/locales/pa.rb
131
+ - lib/num2words/locales/pl.rb
132
+ - lib/num2words/locales/pt.rb
133
+ - lib/num2words/locales/ro.rb
134
+ - lib/num2words/locales/ru.rb
135
+ - lib/num2words/locales/sk.rb
136
+ - lib/num2words/locales/sl.rb
137
+ - lib/num2words/locales/sr.rb
138
+ - lib/num2words/locales/sv.rb
139
+ - lib/num2words/locales/sw.rb
140
+ - lib/num2words/locales/ta.rb
141
+ - lib/num2words/locales/te.rb
142
+ - lib/num2words/locales/th.rb
143
+ - lib/num2words/locales/tr.rb
144
+ - lib/num2words/locales/uk.rb
145
+ - lib/num2words/locales/ur.rb
146
+ - lib/num2words/locales/vi.rb
147
+ - lib/num2words/locales/zh.rb
31
148
  - lib/num2words/version.rb
32
149
  - num2words.gemspec
33
150
  homepage: https://github.com/skyrusx/num2words