numbers_and_words 0.11.2 → 0.11.7

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 (193) hide show
  1. checksums.yaml +5 -5
  2. data/README.rdoc +23 -5
  3. data/lib/numbers_and_words.rb +2 -0
  4. data/lib/numbers_and_words/core_ext.rb +2 -0
  5. data/lib/numbers_and_words/core_ext/array.rb +2 -0
  6. data/lib/numbers_and_words/core_ext/float.rb +2 -0
  7. data/lib/numbers_and_words/core_ext/integer.rb +2 -0
  8. data/lib/numbers_and_words/helper_classes.rb +2 -0
  9. data/lib/numbers_and_words/helper_classes/array_extensions/helpers.rb +6 -4
  10. data/lib/numbers_and_words/helper_classes/figures_array.rb +2 -0
  11. data/lib/numbers_and_words/helper_classes/words_array.rb +2 -0
  12. data/lib/numbers_and_words/i18n.rb +2 -0
  13. data/lib/numbers_and_words/i18n/initialization.rb +2 -0
  14. data/lib/numbers_and_words/i18n/locales/numbers.cs.yml +37 -26
  15. data/lib/numbers_and_words/i18n/locales/numbers.de.yml +5 -4
  16. data/lib/numbers_and_words/i18n/locales/numbers.en-GB.yml +24 -8
  17. data/lib/numbers_and_words/i18n/locales/numbers.en.yml +10 -6
  18. data/lib/numbers_and_words/i18n/locales/numbers.es.yml +6 -5
  19. data/lib/numbers_and_words/i18n/locales/numbers.et.yml +4 -4
  20. data/lib/numbers_and_words/i18n/locales/numbers.fr.yml +45 -41
  21. data/lib/numbers_and_words/i18n/locales/numbers.hu.yml +11 -7
  22. data/lib/numbers_and_words/i18n/locales/numbers.hy.yml +7 -0
  23. data/lib/numbers_and_words/i18n/locales/numbers.it.yml +3 -3
  24. data/lib/numbers_and_words/i18n/locales/numbers.ka.yml +6 -14
  25. data/lib/numbers_and_words/i18n/locales/numbers.lt.yml +4 -5
  26. data/lib/numbers_and_words/i18n/locales/numbers.lv.yml +4 -5
  27. data/lib/numbers_and_words/i18n/locales/numbers.nl.yml +4 -3
  28. data/lib/numbers_and_words/i18n/locales/numbers.pt-BR.yml +51 -22
  29. data/lib/numbers_and_words/i18n/locales/numbers.pt.yml +21 -8
  30. data/lib/numbers_and_words/i18n/locales/numbers.ru.yml +39 -27
  31. data/lib/numbers_and_words/i18n/locales/numbers.se.yml +3 -3
  32. data/lib/numbers_and_words/i18n/locales/numbers.tr.yml +3 -3
  33. data/lib/numbers_and_words/i18n/locales/numbers.ua.yml +39 -15
  34. data/lib/numbers_and_words/i18n/locales/numbers.vi.yml +13 -0
  35. data/lib/numbers_and_words/i18n/pluralization.rb +3 -1
  36. data/lib/numbers_and_words/i18n/plurals/cs.rb +15 -10
  37. data/lib/numbers_and_words/i18n/plurals/fr.rb +5 -3
  38. data/lib/numbers_and_words/i18n/plurals/lt.rb +10 -7
  39. data/lib/numbers_and_words/i18n/plurals/lv.rb +5 -3
  40. data/lib/numbers_and_words/i18n/plurals/plurals.rb +2 -0
  41. data/lib/numbers_and_words/i18n/plurals/ru.rb +15 -10
  42. data/lib/numbers_and_words/i18n/plurals/ua.rb +2 -0
  43. data/lib/numbers_and_words/strategies.rb +2 -0
  44. data/lib/numbers_and_words/strategies/array_joiner.rb +2 -0
  45. data/lib/numbers_and_words/strategies/array_joiner/languages.rb +3 -0
  46. data/lib/numbers_and_words/strategies/array_joiner/languages/base.rb +2 -0
  47. data/lib/numbers_and_words/strategies/array_joiner/languages/cs.rb +2 -0
  48. data/lib/numbers_and_words/strategies/array_joiner/languages/en-GB.rb +3 -1
  49. data/lib/numbers_and_words/strategies/array_joiner/languages/en.rb +2 -0
  50. data/lib/numbers_and_words/strategies/array_joiner/languages/es.rb +2 -0
  51. data/lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb +5 -3
  52. data/lib/numbers_and_words/strategies/array_joiner/languages/fr.rb +2 -0
  53. data/lib/numbers_and_words/strategies/array_joiner/languages/hu.rb +2 -0
  54. data/lib/numbers_and_words/strategies/array_joiner/languages/pt-BR.rb +2 -0
  55. data/lib/numbers_and_words/strategies/array_joiner/languages/ru.rb +2 -0
  56. data/lib/numbers_and_words/strategies/array_joiner/languages/ua.rb +2 -0
  57. data/lib/numbers_and_words/strategies/array_joiner/languages/vi.rb +12 -0
  58. data/lib/numbers_and_words/strategies/figures_converter.rb +2 -0
  59. data/lib/numbers_and_words/strategies/figures_converter/decorators.rb +3 -0
  60. data/lib/numbers_and_words/strategies/figures_converter/decorators/base.rb +2 -0
  61. data/lib/numbers_and_words/strategies/figures_converter/decorators/cs.rb +2 -0
  62. data/lib/numbers_and_words/strategies/figures_converter/decorators/cs/base.rb +2 -0
  63. data/lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb +2 -0
  64. data/lib/numbers_and_words/strategies/figures_converter/decorators/cs/integral.rb +3 -0
  65. data/lib/numbers_and_words/strategies/figures_converter/decorators/en-GB.rb +2 -0
  66. data/lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/base.rb +2 -0
  67. data/lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/fractional.rb +2 -0
  68. data/lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/integral.rb +2 -0
  69. data/lib/numbers_and_words/strategies/figures_converter/decorators/en.rb +2 -0
  70. data/lib/numbers_and_words/strategies/figures_converter/decorators/en/base.rb +2 -0
  71. data/lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb +2 -0
  72. data/lib/numbers_and_words/strategies/figures_converter/decorators/en/integral.rb +2 -0
  73. data/lib/numbers_and_words/strategies/figures_converter/decorators/es.rb +2 -0
  74. data/lib/numbers_and_words/strategies/figures_converter/decorators/es/base.rb +2 -0
  75. data/lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb +3 -1
  76. data/lib/numbers_and_words/strategies/figures_converter/decorators/es/integral.rb +2 -0
  77. data/lib/numbers_and_words/strategies/figures_converter/decorators/fr.rb +2 -0
  78. data/lib/numbers_and_words/strategies/figures_converter/decorators/fr/base.rb +2 -0
  79. data/lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb +2 -0
  80. data/lib/numbers_and_words/strategies/figures_converter/decorators/fr/integral.rb +2 -0
  81. data/lib/numbers_and_words/strategies/figures_converter/decorators/hu.rb +2 -0
  82. data/lib/numbers_and_words/strategies/figures_converter/decorators/hu/base.rb +2 -0
  83. data/lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb +3 -1
  84. data/lib/numbers_and_words/strategies/figures_converter/decorators/hu/integral.rb +2 -0
  85. data/lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR.rb +2 -0
  86. data/lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/base.rb +2 -0
  87. data/lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb +2 -0
  88. data/lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/integral.rb +2 -0
  89. data/lib/numbers_and_words/strategies/figures_converter/decorators/ru.rb +2 -0
  90. data/lib/numbers_and_words/strategies/figures_converter/decorators/ru/base.rb +2 -0
  91. data/lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb +2 -0
  92. data/lib/numbers_and_words/strategies/figures_converter/decorators/ru/integral.rb +2 -0
  93. data/lib/numbers_and_words/strategies/figures_converter/decorators/ua.rb +2 -0
  94. data/lib/numbers_and_words/strategies/figures_converter/decorators/ua/base.rb +2 -0
  95. data/lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb +2 -0
  96. data/lib/numbers_and_words/strategies/figures_converter/decorators/ua/integral.rb +2 -0
  97. data/lib/numbers_and_words/strategies/figures_converter/decorators/vi.rb +5 -0
  98. data/lib/numbers_and_words/strategies/figures_converter/decorators/vi/base.rb +14 -0
  99. data/lib/numbers_and_words/strategies/figures_converter/decorators/vi/fractional.rb +14 -0
  100. data/lib/numbers_and_words/strategies/figures_converter/decorators/vi/integral.rb +14 -0
  101. data/lib/numbers_and_words/strategies/figures_converter/languages.rb +14 -15
  102. data/lib/numbers_and_words/strategies/figures_converter/languages/base.rb +4 -2
  103. data/lib/numbers_and_words/strategies/figures_converter/languages/cs.rb +4 -4
  104. data/lib/numbers_and_words/strategies/figures_converter/languages/de.rb +7 -7
  105. data/lib/numbers_and_words/strategies/figures_converter/languages/en-GB.rb +2 -0
  106. data/lib/numbers_and_words/strategies/figures_converter/languages/en.rb +3 -9
  107. data/lib/numbers_and_words/strategies/figures_converter/languages/es.rb +11 -13
  108. data/lib/numbers_and_words/strategies/figures_converter/languages/et.rb +2 -2
  109. data/lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb +2 -0
  110. data/lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb +2 -0
  111. data/lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb +2 -0
  112. data/lib/numbers_and_words/strategies/figures_converter/languages/fr.rb +12 -12
  113. data/lib/numbers_and_words/strategies/figures_converter/languages/hu.rb +2 -2
  114. data/lib/numbers_and_words/strategies/figures_converter/languages/{families/latin.rb → hy.rb} +3 -4
  115. data/lib/numbers_and_words/strategies/figures_converter/languages/it.rb +2 -1
  116. data/lib/numbers_and_words/strategies/figures_converter/languages/ka.rb +13 -15
  117. data/lib/numbers_and_words/strategies/figures_converter/languages/lt.rb +8 -12
  118. data/lib/numbers_and_words/strategies/figures_converter/languages/lv.rb +4 -14
  119. data/lib/numbers_and_words/strategies/figures_converter/languages/nl.rb +3 -5
  120. data/lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb +14 -12
  121. data/lib/numbers_and_words/strategies/figures_converter/languages/pt.rb +3 -3
  122. data/lib/numbers_and_words/strategies/figures_converter/languages/ru.rb +2 -0
  123. data/lib/numbers_and_words/strategies/figures_converter/languages/se.rb +2 -1
  124. data/lib/numbers_and_words/strategies/figures_converter/languages/tr.rb +4 -4
  125. data/lib/numbers_and_words/strategies/figures_converter/languages/ua.rb +2 -0
  126. data/lib/numbers_and_words/strategies/figures_converter/languages/vi.rb +100 -0
  127. data/lib/numbers_and_words/strategies/figures_converter/options.rb +15 -2
  128. data/lib/numbers_and_words/strategies/figures_converter/options/base.rb +5 -0
  129. data/lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb +30 -0
  130. data/lib/numbers_and_words/strategies/figures_converter/options/base/ordinal.rb +28 -0
  131. data/lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb +30 -0
  132. data/lib/numbers_and_words/strategies/figures_converter/options/cs.rb +2 -0
  133. data/lib/numbers_and_words/strategies/figures_converter/options/cs/gender.rb +3 -14
  134. data/lib/numbers_and_words/strategies/figures_converter/options/cs/ordinal.rb +3 -15
  135. data/lib/numbers_and_words/strategies/figures_converter/options/cs/remove_zero.rb +3 -17
  136. data/lib/numbers_and_words/strategies/figures_converter/options/en-GB.rb +2 -0
  137. data/lib/numbers_and_words/strategies/figures_converter/options/en-GB/hundreds_with_union.rb +2 -0
  138. data/lib/numbers_and_words/strategies/figures_converter/options/en-GB/ordinal.rb +2 -0
  139. data/lib/numbers_and_words/strategies/figures_converter/options/en-GB/pronounced.rb +2 -0
  140. data/lib/numbers_and_words/strategies/figures_converter/options/en-GB/remove_hyphen.rb +2 -0
  141. data/lib/numbers_and_words/strategies/figures_converter/options/en-GB/remove_zero.rb +2 -0
  142. data/lib/numbers_and_words/strategies/figures_converter/options/en.rb +2 -0
  143. data/lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb +2 -0
  144. data/lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb +3 -10
  145. data/lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb +6 -13
  146. data/lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb +2 -0
  147. data/lib/numbers_and_words/strategies/figures_converter/options/en/remove_zero.rb +3 -17
  148. data/lib/numbers_and_words/strategies/figures_converter/options/es.rb +2 -0
  149. data/lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb +2 -0
  150. data/lib/numbers_and_words/strategies/figures_converter/options/es/gender.rb +3 -17
  151. data/lib/numbers_and_words/strategies/figures_converter/options/es/remove_zero.rb +3 -17
  152. data/lib/numbers_and_words/strategies/figures_converter/options/hu.rb +2 -0
  153. data/lib/numbers_and_words/strategies/figures_converter/options/hu/ordinal.rb +3 -50
  154. data/lib/numbers_and_words/strategies/figures_converter/options/pt-BR.rb +2 -0
  155. data/lib/numbers_and_words/strategies/figures_converter/options/pt-BR/gender.rb +3 -18
  156. data/lib/numbers_and_words/strategies/figures_converter/options/pt-BR/ordinal.rb +3 -15
  157. data/lib/numbers_and_words/strategies/figures_converter/options/pt-BR/remove_zero.rb +3 -17
  158. data/lib/numbers_and_words/strategies/figures_converter/options/ru.rb +2 -0
  159. data/lib/numbers_and_words/strategies/figures_converter/options/ru/gender.rb +3 -17
  160. data/lib/numbers_and_words/strategies/figures_converter/options/ua.rb +2 -0
  161. data/lib/numbers_and_words/strategies/figures_converter/options/ua/gender.rb +3 -17
  162. data/lib/numbers_and_words/translations.rb +4 -0
  163. data/lib/numbers_and_words/translations/base.rb +3 -1
  164. data/lib/numbers_and_words/translations/cs.rb +6 -31
  165. data/lib/numbers_and_words/translations/de.rb +5 -3
  166. data/lib/numbers_and_words/translations/en-GB.rb +5 -1
  167. data/lib/numbers_and_words/translations/en.rb +2 -0
  168. data/lib/numbers_and_words/translations/es.rb +15 -25
  169. data/lib/numbers_and_words/translations/et.rb +4 -7
  170. data/lib/numbers_and_words/translations/extensions/fraction_significance.rb +6 -4
  171. data/lib/numbers_and_words/translations/families/base.rb +5 -3
  172. data/lib/numbers_and_words/translations/families/cyrillic.rb +6 -8
  173. data/lib/numbers_and_words/translations/families/latin.rb +2 -0
  174. data/lib/numbers_and_words/translations/fr.rb +15 -18
  175. data/lib/numbers_and_words/translations/hu.rb +4 -7
  176. data/lib/numbers_and_words/translations/hy.rb +21 -0
  177. data/lib/numbers_and_words/translations/it.rb +2 -0
  178. data/lib/numbers_and_words/translations/ka.rb +6 -14
  179. data/lib/numbers_and_words/translations/lt.rb +4 -11
  180. data/lib/numbers_and_words/translations/lv.rb +4 -11
  181. data/lib/numbers_and_words/translations/nl.rb +6 -2
  182. data/lib/numbers_and_words/translations/pt-BR.rb +23 -23
  183. data/lib/numbers_and_words/translations/pt.rb +5 -11
  184. data/lib/numbers_and_words/translations/ru.rb +2 -17
  185. data/lib/numbers_and_words/translations/se.rb +2 -0
  186. data/lib/numbers_and_words/translations/tr.rb +2 -4
  187. data/lib/numbers_and_words/translations/ua.rb +2 -13
  188. data/lib/numbers_and_words/translations/vi.rb +24 -0
  189. data/lib/numbers_and_words/version.rb +3 -1
  190. data/lib/numbers_and_words/wrappers.rb +2 -0
  191. data/lib/numbers_and_words/wrappers/float.rb +3 -1
  192. data/lib/numbers_and_words/wrappers/integer.rb +2 -0
  193. metadata +33 -20
@@ -1,16 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class De < Base
6
- include Families::Latin
7
-
8
8
  def print_words
9
- complex_part.count > 1 ? print_megs_words : @strings.flatten.reverse.join('')
9
+ complex_part.count > 1 ? print_megs_words : @strings.flatten.reverse.join
10
10
  end
11
11
 
12
12
  def print_megs_words
13
- [print_megs, print_other].reject(&:empty?).join ' '
13
+ [print_megs, print_other].reject(&:empty?).join(' ')
14
14
  end
15
15
 
16
16
  def complex_number_to_words
@@ -40,16 +40,16 @@ module NumbersAndWords
40
40
 
41
41
  def print_megs
42
42
  complex_part[1..-1].map do |el|
43
- [el[1..-1].to_a.reverse.join(''), el.first].join(' ')
43
+ [el[1..-1].to_a.reverse.join, el.first].join(' ')
44
44
  end.reject(&:empty?).reverse.join(' ')
45
45
  end
46
46
 
47
47
  def print_other
48
- [print_thousands, simple_part.reverse.join('')].join('')
48
+ [print_thousands, simple_part.reverse.join].join
49
49
  end
50
50
 
51
51
  def print_thousands
52
- complex_part.first.reverse.join('')
52
+ complex_part.first.reverse.join
53
53
  end
54
54
 
55
55
  def simple_part
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class En < Base
6
- include Families::Latin
7
-
8
8
  %i[ones teens tens megs].each do |method_name|
9
9
  define_method(method_name) do
10
10
  super({ prefix: maybe_ordinal(method_name) })
@@ -29,14 +29,8 @@ module NumbersAndWords
29
29
  def strings_logic
30
30
  if @options.pronounced.active?
31
31
  @options.pronounced.process self, @figures
32
- elsif @figures.capacity_count
33
- number_without_capacity_to_words + complex_number_to_words
34
- elsif @figures.hundreds
35
- hundreds_number_to_words
36
- elsif @figures.tens || @figures.ones
37
- simple_number_to_words
38
32
  else
39
- []
33
+ super
40
34
  end
41
35
  end
42
36
 
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Es < Base
6
- include Families::Latin
7
-
8
8
  def capacity_iteration
9
9
  super.compact
10
10
  end
@@ -20,14 +20,10 @@ module NumbersAndWords
20
20
  end
21
21
 
22
22
  def tens_with_ones
23
- if @figures.tens == 2
24
- @translations
25
- .twenties_with_ones(@figures, gender: gender,
26
- is_apocopated: one_apocopated?)
27
- else
28
- super({ gender: gender,
29
- is_apocopated: one_apocopated? })
30
- end
23
+ options = { gender: gender, is_apocopated: one_apocopated? }
24
+ return @translations.twenties_with_ones(@figures, options) if @figures.tens == 2
25
+
26
+ super(options)
31
27
  end
32
28
 
33
29
  def hundreds
@@ -37,6 +33,7 @@ module NumbersAndWords
37
33
 
38
34
  def megs
39
35
  return @translations.megs(1, number: 1) if long_scale_thousand?
36
+
40
37
  super({ number: @figures.number_in_capacity(@current_capacity) })
41
38
  end
42
39
 
@@ -51,12 +48,12 @@ module NumbersAndWords
51
48
 
52
49
  def long_scale_thousand?
53
50
  @current_capacity.odd? &&
54
- @figures.number_in_capacity(@current_capacity - 1) != 0
51
+ !@figures.number_in_capacity(@current_capacity - 1).zero?
55
52
  end
56
53
 
57
54
  def one_apocopated?
58
- true if @current_capacity > 0 && @figures.ones == 1 ||
59
- @options.apocopated.result
55
+ @current_capacity.positive? && @figures.ones == 1 ||
56
+ @options.apocopated.result
60
57
  end
61
58
 
62
59
  def hundred_apocopated?
@@ -67,6 +64,7 @@ module NumbersAndWords
67
64
  @current_capacity ||= 0
68
65
 
69
66
  return :male if @current_capacity >= 2
67
+
70
68
  @options.gender.result
71
69
  end
72
70
 
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Et < Base
6
- include Families::Latin
7
-
8
8
  def megs
9
9
  super({ number: @figures.number_in_capacity(@current_capacity) })
10
10
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
@@ -1,12 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Fr < Base
6
- include Families::Latin
7
-
8
- private
9
-
10
8
  def capacity_iteration
11
9
  words = []
12
10
  capacity_words = words_in_capacity(@current_capacity)
@@ -15,14 +13,6 @@ module NumbersAndWords
15
13
  words
16
14
  end
17
15
 
18
- def one?
19
- words_in_capacity(@current_capacity) == [translations.ones(1)]
20
- end
21
-
22
- def thousand?
23
- FiguresArray::THOUSAND_CAPACITY == @current_capacity
24
- end
25
-
26
16
  def hundreds
27
17
  super({ pluralize: simple_number_to_words.empty? })
28
18
  end
@@ -30,6 +20,16 @@ module NumbersAndWords
30
20
  def megs
31
21
  super({ number: @figures.number_in_capacity(@current_capacity) })
32
22
  end
23
+
24
+ private
25
+
26
+ def one?
27
+ words_in_capacity(@current_capacity) == [translations.ones(1)]
28
+ end
29
+
30
+ def thousand?
31
+ FiguresArray::THOUSAND_CAPACITY == @current_capacity
32
+ end
33
33
  end
34
34
  end
35
35
  end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Hu < Base
6
- include Families::Latin
7
-
8
8
  def print_words
9
9
  inner_reverse_words.reverse.join(greater_than_2000? && '-' || '')
10
10
  end
@@ -1,11 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
- module Families
6
- module Latin
7
- include Base
8
- end
7
+ class Hy < Base
9
8
  end
10
9
  end
11
10
  end
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class It < Base
6
- include Families::Latin
7
8
  end
8
9
  end
9
10
  end
@@ -1,12 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Ka < Base
6
- include Families::Latin
7
-
8
- private
9
-
10
8
  def capacity_iteration
11
9
  words = []
12
10
  capacity_words = words_in_capacity(@current_capacity)
@@ -15,25 +13,25 @@ module NumbersAndWords
15
13
  words
16
14
  end
17
15
 
18
- def one?
19
- words_in_capacity(@current_capacity) == [translations.ones(1)]
20
- end
21
-
22
- def thousand?
23
- FiguresArray::THOUSAND_CAPACITY == @current_capacity
24
- end
25
-
26
16
  def hundreds
27
17
  super({ only_hundreds: figures[0, 2] == [0, 0] })
28
18
  end
29
19
 
30
20
  def megs
31
- prefix = if @figures.hundreds || @figures.tens || @figures.ones
32
- :partials
33
- end
21
+ prefix = (:partials if @figures.hundreds || @figures.tens || @figures.ones)
34
22
 
35
23
  super(prefix: prefix)
36
24
  end
25
+
26
+ private
27
+
28
+ def one?
29
+ words_in_capacity(@current_capacity) == [translations.ones(1)]
30
+ end
31
+
32
+ def thousand?
33
+ FiguresArray::THOUSAND_CAPACITY == @current_capacity
34
+ end
37
35
  end
38
36
  end
39
37
  end
@@ -1,12 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Lt < Base
6
- include Families::Latin
7
-
8
- private
9
-
10
8
  def capacity_iteration
11
9
  words = []
12
10
  capacity_words = words_in_capacity(@current_capacity)
@@ -15,6 +13,12 @@ module NumbersAndWords
15
13
  words
16
14
  end
17
15
 
16
+ def megs
17
+ super({ number: @figures.number_in_capacity(@current_capacity) })
18
+ end
19
+
20
+ private
21
+
18
22
  def one?
19
23
  words_in_capacity(@current_capacity) == [translations.ones(1)]
20
24
  end
@@ -22,14 +26,6 @@ module NumbersAndWords
22
26
  def thousand?
23
27
  FiguresArray::THOUSAND_CAPACITY == @current_capacity
24
28
  end
25
-
26
- def hundreds
27
- super({ is_hundred: (figures[1, 2] == [0, 1] && simple_number_to_words.empty?) })
28
- end
29
-
30
- def megs
31
- super({ number: @figures.number_in_capacity(@current_capacity) })
32
- end
33
29
  end
34
30
  end
35
31
  end
@@ -1,22 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Lv < Base
6
- include Families::Latin
7
-
8
- private
9
-
10
- def capacity_iteration
11
- words = []
12
- capacity_words = words_in_capacity(@current_capacity)
13
- words.push(megs) unless capacity_words.empty?
14
- words += capacity_words
15
- words
16
- end
17
-
18
- def hundreds
19
- super({ is_hundred: (figures[1, 2] == [0, 1] && simple_number_to_words.empty?) })
8
+ def tens_with_ones
9
+ super separator: ' '
20
10
  end
21
11
 
22
12
  def megs
@@ -1,20 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class Nl < Base
6
- include Families::Latin
7
-
8
8
  def hundreds_number_to_words
9
9
  [super.reverse.join]
10
10
  end
11
11
 
12
12
  def capacity_iteration
13
13
  if FiguresArray::THOUSAND_CAPACITY == @current_capacity
14
- words = []
15
14
  capacity_words = words_in_capacity(@current_capacity)
16
- words.push megs unless capacity_words.empty?
17
- capacity_words.empty? ? [] : [capacity_words, words].join
15
+ capacity_words.empty? ? [] : [capacity_words, megs].join
18
16
  else
19
17
  super
20
18
  end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module NumbersAndWords
2
4
  module Strategies
3
5
  module FiguresConverter
4
6
  module Languages
5
7
  class PtBr < Base
6
- include Families::Latin
7
-
8
8
  %i[teens tens tens_with_ones].each do |method_name|
9
9
  define_method(method_name) do
10
10
  super(internal_options)
@@ -39,7 +39,7 @@ module NumbersAndWords
39
39
  end
40
40
 
41
41
  def megs
42
- super(internal_options.merge(is_one: words_in_capacity(current_capacity) == [translations.ones(1, internal_options)],
42
+ super(internal_options.merge(number: @figures.number_in_capacity(@current_capacity),
43
43
  is_opaque: opaque?,
44
44
  is_without_connector: without_connector?,
45
45
  is_with_comma: with_comma?))
@@ -58,8 +58,7 @@ module NumbersAndWords
58
58
  def gender
59
59
  return (options.gender.result || :male) if maybe_ordinal
60
60
 
61
- @current_capacity ||= 0
62
- if @current_capacity > 0 && figures[0] == 1
61
+ if current_capacity&.positive? && figures[0] == 1
63
62
  :male
64
63
  else
65
64
  options.gender.result
@@ -79,22 +78,25 @@ module NumbersAndWords
79
78
  end
80
79
 
81
80
  def one_thousand?
82
- current_capacity == 1 && figures[0] == 1 && figures.hundreds.nil? && figures.tens.nil?
81
+ current_capacity == 1 &&
82
+ figures.ones == 1 &&
83
+ figures.tens.nil? &&
84
+ figures.hundreds.nil?
83
85
  end
84
86
 
85
87
  def without_connector?
86
88
  return false if with_comma?
87
- # without connector when there is hundreds and tens_with_ones
88
- return true if figures.hundreds && figures.tens_with_ones
89
- # without connector when there is hundreds and tens
90
- return true if figures.hundreds && figures.tens
91
- # without connector when there is hundreds and ones
92
- return true if figures.hundreds && figures.ones
89
+ return true if figures.hundreds &&
90
+ (figures.tens_with_ones ||
91
+ figures.tens ||
92
+ figures.ones)
93
+
93
94
  false
94
95
  end
95
96
 
96
97
  def with_comma?
97
98
  return false unless @current_capacity > 1
99
+
98
100
  # if any lower capacity is single word, in portuguese only tens are single words
99
101
  number_under_capacity = figures.number_under_capacity(@current_capacity)
100
102
  return false if number_under_capacity < 20