numbers_and_words 0.5.0 → 0.6.0
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 +15 -0
- data/README.rdoc +90 -1
- data/lib/numbers_and_words.rb +4 -3
- data/lib/numbers_and_words/core_ext.rb +1 -0
- data/lib/numbers_and_words/core_ext/array.rb +1 -1
- data/lib/numbers_and_words/core_ext/float.rb +5 -0
- data/lib/numbers_and_words/core_ext/integer.rb +2 -9
- data/lib/numbers_and_words/helper_classes.rb +2 -0
- data/lib/numbers_and_words/helper_classes/array_extensions/helpers.rb +81 -0
- data/lib/numbers_and_words/helper_classes/array_extensions/validations.rb +19 -0
- data/lib/numbers_and_words/helper_classes/figures_array.rb +18 -0
- data/lib/numbers_and_words/helper_classes/words_array.rb +11 -0
- data/lib/numbers_and_words/i18n/locales/numbers.en.yml +48 -0
- data/lib/numbers_and_words/i18n/locales/numbers.es.yml +15 -0
- data/lib/numbers_and_words/i18n/locales/numbers.hu.yml +16 -0
- data/lib/numbers_and_words/i18n/locales/numbers.ru.yml +27 -3
- data/lib/numbers_and_words/i18n/locales/numbers.se.yml +7 -0
- data/lib/numbers_and_words/i18n/locales/numbers.ua.yml +14 -2
- data/lib/numbers_and_words/i18n/pluralization.rb +1 -0
- data/lib/numbers_and_words/i18n/plurals/es.rb +11 -0
- data/lib/numbers_and_words/strategies.rb +16 -11
- data/lib/numbers_and_words/strategies/array_joiner.rb +31 -0
- data/lib/numbers_and_words/strategies/figures_converter.rb +33 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators.rb +39 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/base.rb +18 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/en.rb +3 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/en/base.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb +38 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/en/integral.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/hu.rb +3 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/hu/base.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb +38 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/hu/integral.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ru.rb +3 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ru/base.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb +39 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ru/integral.rb +27 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ua.rb +3 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ua/base.rb +12 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb +39 -0
- data/lib/numbers_and_words/strategies/figures_converter/decorators/ua/integral.rb +27 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages.rb +39 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/base.rb +29 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/en.rb +48 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/es.rb +37 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb +77 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb +34 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb +36 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/families/latin.rb +13 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/fr.rb +37 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/hu.rb +63 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/it.rb +11 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/nl.rb +26 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/ru.rb +11 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/se.rb +11 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/tr.rb +11 -0
- data/lib/numbers_and_words/strategies/figures_converter/languages/ua.rb +11 -0
- data/lib/numbers_and_words/strategies/figures_converter/options.rb +41 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/en.rb +4 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb +33 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb +60 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb +29 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/en/remove_zero.rb +29 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/hu.rb +1 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/hu/ordinal.rb +60 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/ru.rb +1 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/ru/gender.rb +28 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/ua.rb +1 -0
- data/lib/numbers_and_words/strategies/figures_converter/options/ua/gender.rb +28 -0
- data/lib/numbers_and_words/translations.rb +25 -0
- data/lib/numbers_and_words/{translations_helpers → translations}/base.rb +2 -2
- data/lib/numbers_and_words/translations/en.rb +8 -0
- data/lib/numbers_and_words/translations/es.rb +37 -0
- data/lib/numbers_and_words/translations/extensions/fraction_significance.rb +25 -0
- data/lib/numbers_and_words/translations/families/base.rb +33 -0
- data/lib/numbers_and_words/translations/families/cyrillic.rb +29 -0
- data/lib/numbers_and_words/translations/families/latin.rb +23 -0
- data/lib/numbers_and_words/translations/fr.rb +29 -0
- data/lib/numbers_and_words/translations/hu.rb +26 -0
- data/lib/numbers_and_words/translations/it.rb +15 -0
- data/lib/numbers_and_words/translations/nl.rb +15 -0
- data/lib/numbers_and_words/translations/ru.rb +25 -0
- data/lib/numbers_and_words/translations/se.rb +11 -0
- data/lib/numbers_and_words/translations/tr.rb +11 -0
- data/lib/numbers_and_words/translations/ua.rb +21 -0
- data/lib/numbers_and_words/version.rb +1 -1
- data/lib/numbers_and_words/wrappers.rb +2 -0
- data/lib/numbers_and_words/wrappers/float.rb +60 -0
- data/lib/numbers_and_words/wrappers/integer.rb +21 -0
- metadata +81 -44
- data/lib/numbers_and_words/array_additions.rb +0 -2
- data/lib/numbers_and_words/array_additions/helpers.rb +0 -44
- data/lib/numbers_and_words/array_additions/validations.rb +0 -9
- data/lib/numbers_and_words/figures_array.rb +0 -15
- data/lib/numbers_and_words/strategies/base.rb +0 -18
- data/lib/numbers_and_words/strategies/en.rb +0 -8
- data/lib/numbers_and_words/strategies/families/base.rb +0 -71
- data/lib/numbers_and_words/strategies/families/cyrillic.rb +0 -18
- data/lib/numbers_and_words/strategies/families/latin.rb +0 -9
- data/lib/numbers_and_words/strategies/fr.rb +0 -32
- data/lib/numbers_and_words/strategies/it.rb +0 -8
- data/lib/numbers_and_words/strategies/nl.rb +0 -23
- data/lib/numbers_and_words/strategies/ru.rb +0 -8
- data/lib/numbers_and_words/strategies/tr.rb +0 -8
- data/lib/numbers_and_words/strategies/ua.rb +0 -8
- data/lib/numbers_and_words/translations_helpers.rb +0 -11
- data/lib/numbers_and_words/translations_helpers/en.rb +0 -12
- data/lib/numbers_and_words/translations_helpers/families/base.rb +0 -30
- data/lib/numbers_and_words/translations_helpers/families/cyrillic.rb +0 -28
- data/lib/numbers_and_words/translations_helpers/families/latin.rb +0 -23
- data/lib/numbers_and_words/translations_helpers/fr.rb +0 -34
- data/lib/numbers_and_words/translations_helpers/it.rb +0 -16
- data/lib/numbers_and_words/translations_helpers/nl.rb +0 -18
- data/lib/numbers_and_words/translations_helpers/ru.rb +0 -8
- data/lib/numbers_and_words/translations_helpers/tr.rb +0 -8
- data/lib/numbers_and_words/translations_helpers/ua.rb +0 -8
@@ -0,0 +1,39 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Decorators
|
5
|
+
module Ru
|
6
|
+
class Fractional < Base
|
7
|
+
|
8
|
+
def run
|
9
|
+
@options[:gender] = :female
|
10
|
+
"#{super} #{fraction_significance}"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def fraction_significance
|
16
|
+
@strategy.translations.micros full_fraction.fraction_capacity, figures.reverse.join.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def full_fraction
|
20
|
+
(0..zero_length).inject(figures.clone) { |result, el| result.unshift '0' }.to_figures
|
21
|
+
end
|
22
|
+
|
23
|
+
def figures
|
24
|
+
@strategy.figures
|
25
|
+
end
|
26
|
+
|
27
|
+
def zero_length
|
28
|
+
fraction_length - figures.length
|
29
|
+
end
|
30
|
+
|
31
|
+
def fraction_length
|
32
|
+
@options[:fractional][:length].to_i
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Decorators
|
5
|
+
module Ru
|
6
|
+
class Integral < Base
|
7
|
+
|
8
|
+
def run
|
9
|
+
@options[:gender] = :female
|
10
|
+
"#{super} #{integral_significance}"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def integral_significance
|
16
|
+
@strategy.translations.integral figures.reverse.join.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def figures
|
20
|
+
@strategy.language.figures
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Decorators
|
5
|
+
module Ua
|
6
|
+
class Fractional < Base
|
7
|
+
|
8
|
+
def run
|
9
|
+
@options[:gender] = :female
|
10
|
+
"#{super} #{fraction_significance}"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def fraction_significance
|
16
|
+
@strategy.translations.micros full_fraction.fraction_capacity, figures.reverse.join.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def full_fraction
|
20
|
+
(0..zero_length).inject(figures.clone) { |result, el| result.unshift '0' }.to_figures
|
21
|
+
end
|
22
|
+
|
23
|
+
def figures
|
24
|
+
@strategy.figures
|
25
|
+
end
|
26
|
+
|
27
|
+
def zero_length
|
28
|
+
fraction_length - figures.length
|
29
|
+
end
|
30
|
+
|
31
|
+
def fraction_length
|
32
|
+
@options[:fractional][:length].to_i
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Decorators
|
5
|
+
module Ua
|
6
|
+
class Integral < Base
|
7
|
+
|
8
|
+
def run
|
9
|
+
@options[:gender] = :female
|
10
|
+
"#{super} #{integral_significance}"
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def integral_significance
|
16
|
+
@strategy.translations.integral figures.reverse.join.to_i
|
17
|
+
end
|
18
|
+
|
19
|
+
def figures
|
20
|
+
@strategy.language.figures
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'numbers_and_words/strategies/figures_converter/languages/families/helpers'
|
2
|
+
require 'numbers_and_words/strategies/figures_converter/languages/families/base'
|
3
|
+
|
4
|
+
require 'numbers_and_words/strategies/figures_converter/languages/base'
|
5
|
+
|
6
|
+
require 'numbers_and_words/strategies/figures_converter/languages/families/latin'
|
7
|
+
|
8
|
+
require 'numbers_and_words/strategies/figures_converter/languages/en'
|
9
|
+
require 'numbers_and_words/strategies/figures_converter/languages/fr'
|
10
|
+
require 'numbers_and_words/strategies/figures_converter/languages/hu'
|
11
|
+
require 'numbers_and_words/strategies/figures_converter/languages/se'
|
12
|
+
require 'numbers_and_words/strategies/figures_converter/languages/it'
|
13
|
+
require 'numbers_and_words/strategies/figures_converter/languages/nl'
|
14
|
+
require 'numbers_and_words/strategies/figures_converter/languages/tr'
|
15
|
+
require 'numbers_and_words/strategies/figures_converter/languages/es'
|
16
|
+
|
17
|
+
require 'numbers_and_words/strategies/figures_converter/languages/families/cyrillic'
|
18
|
+
|
19
|
+
require 'numbers_and_words/strategies/figures_converter/languages/ru'
|
20
|
+
require 'numbers_and_words/strategies/figures_converter/languages/ua'
|
21
|
+
|
22
|
+
|
23
|
+
module NumbersAndWords
|
24
|
+
module Strategies
|
25
|
+
module FiguresConverter
|
26
|
+
module Languages
|
27
|
+
class << self
|
28
|
+
def factory strategy
|
29
|
+
"#{name}::#{language_class_name}".constantize.new strategy
|
30
|
+
end
|
31
|
+
|
32
|
+
def language_class_name
|
33
|
+
::I18n.locale.to_s.titleize.gsub ' ', '::'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Languages
|
5
|
+
class Base
|
6
|
+
include Languages::Families::Base
|
7
|
+
|
8
|
+
attr_accessor :strategy, :figures, :translations, :strings, :options
|
9
|
+
|
10
|
+
def initialize strategy
|
11
|
+
@strategy = strategy
|
12
|
+
@figures = strategy.figures
|
13
|
+
@translations = strategy.translations
|
14
|
+
@options = strategy.options
|
15
|
+
end
|
16
|
+
|
17
|
+
def words
|
18
|
+
@strings = strings_logic
|
19
|
+
@strings.empty? && zero || print_words
|
20
|
+
end
|
21
|
+
|
22
|
+
def print_words
|
23
|
+
@strings.reverse.join ' '
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Languages
|
5
|
+
class En < Base
|
6
|
+
include Families::Latin
|
7
|
+
|
8
|
+
[:ones, :teens, :tens, :megs].each do |method_name|
|
9
|
+
define_method(method_name) {
|
10
|
+
super({:prefix => maybe_ordinal(method_name)})
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
def hundreds
|
15
|
+
maybe_union_after_hundreds super({:prefix => maybe_ordinal(:hundreds)})
|
16
|
+
end
|
17
|
+
|
18
|
+
def zero
|
19
|
+
super({:prefix => maybe_ordinal(:zero)}) unless maybe_remove_zero
|
20
|
+
end
|
21
|
+
|
22
|
+
def tens_with_ones
|
23
|
+
super({
|
24
|
+
:separator => maybe_hyphen_separator,
|
25
|
+
:prefix => maybe_ordinal(:tens_with_ones)
|
26
|
+
})
|
27
|
+
end
|
28
|
+
|
29
|
+
def maybe_hyphen_separator
|
30
|
+
@options.remove_hyphen.result
|
31
|
+
end
|
32
|
+
|
33
|
+
def maybe_ordinal type
|
34
|
+
@options.ordinal.result type
|
35
|
+
end
|
36
|
+
|
37
|
+
def maybe_union_after_hundreds translations
|
38
|
+
@options.hundreds_with_union.modify_or_leave translations
|
39
|
+
end
|
40
|
+
|
41
|
+
def maybe_remove_zero
|
42
|
+
@options.remove_zero.result
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Languages
|
5
|
+
class Es < Base
|
6
|
+
include Families::Latin
|
7
|
+
|
8
|
+
def capacity_iteration
|
9
|
+
words = []
|
10
|
+
capacity_words = words_in_capacity(@current_capacity)
|
11
|
+
words.push megs(capacity_words) unless capacity_words.empty?
|
12
|
+
|
13
|
+
if 0 < @current_capacity
|
14
|
+
# eg 1000000 should be "un millon" not "uno millon"
|
15
|
+
# 501000 should be "quinientos un mil" not "quinientos uno mil"
|
16
|
+
# so we replace "uno" with "un" throughout
|
17
|
+
|
18
|
+
capacity_words = capacity_words.map{|word|
|
19
|
+
word.gsub( @translations.ones(1), @translations.one )
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
words + capacity_words
|
24
|
+
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 capacity_words
|
31
|
+
super({:is_one => capacity_words == [@translations.ones(1)]})
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Languages
|
5
|
+
module Families
|
6
|
+
module Base
|
7
|
+
include Helpers
|
8
|
+
|
9
|
+
attr_accessor :current_capacity, :parent_figures
|
10
|
+
|
11
|
+
def strings_logic
|
12
|
+
if @figures.capacity_count
|
13
|
+
number_without_capacity_to_words + complex_number_to_words
|
14
|
+
elsif @figures.hundreds
|
15
|
+
hundreds_number_to_words
|
16
|
+
elsif @figures.tens or @figures.ones
|
17
|
+
simple_number_to_words
|
18
|
+
else
|
19
|
+
[]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def complex_number_to_words
|
24
|
+
(1..@figures.capacity_count).map { |capacity|
|
25
|
+
@current_capacity = capacity
|
26
|
+
capacity_iteration
|
27
|
+
}.flatten
|
28
|
+
end
|
29
|
+
|
30
|
+
def capacity_iteration
|
31
|
+
words = []
|
32
|
+
capacity_words = words_in_capacity(@current_capacity)
|
33
|
+
words.push(megs) unless capacity_words.empty?
|
34
|
+
words + capacity_words
|
35
|
+
end
|
36
|
+
|
37
|
+
def words_in_capacity capacity = 0
|
38
|
+
save_parent_figures do
|
39
|
+
@figures = @parent_figures.figures_array_in_capacity(capacity)
|
40
|
+
strings_logic
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
alias_method :number_without_capacity_to_words, :words_in_capacity
|
45
|
+
|
46
|
+
def hundreds_number_to_words
|
47
|
+
simple_number_to_words + [hundreds]
|
48
|
+
end
|
49
|
+
|
50
|
+
def complex_tens
|
51
|
+
@figures.ones ? tens_with_ones : tens
|
52
|
+
end
|
53
|
+
|
54
|
+
def simple_number_to_words
|
55
|
+
if @figures.teens
|
56
|
+
[teens]
|
57
|
+
elsif @figures.tens
|
58
|
+
[complex_tens]
|
59
|
+
elsif @figures.ones
|
60
|
+
[ones]
|
61
|
+
else
|
62
|
+
[]
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def save_parent_figures
|
67
|
+
@parent_figures = @figures
|
68
|
+
result = yield
|
69
|
+
@figures = @parent_figures
|
70
|
+
result
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Languages
|
5
|
+
module Families
|
6
|
+
module Cyrillic
|
7
|
+
include Base
|
8
|
+
|
9
|
+
def gender
|
10
|
+
case @current_capacity.to_i
|
11
|
+
when 1
|
12
|
+
:female
|
13
|
+
when 0
|
14
|
+
options.gender.result
|
15
|
+
else
|
16
|
+
:male
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
[:ones, :tens_with_ones].each do |method_name|
|
21
|
+
define_method(method_name) {
|
22
|
+
super({:gender => gender})
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
def megs
|
27
|
+
super({:number => @figures.number_in_capacity(@current_capacity)})
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module NumbersAndWords
|
2
|
+
module Strategies
|
3
|
+
module FiguresConverter
|
4
|
+
module Languages
|
5
|
+
module Families
|
6
|
+
module Helpers
|
7
|
+
[:zero].each do |method_name|
|
8
|
+
define_method(method_name) { |*args|
|
9
|
+
options = args.first || {}
|
10
|
+
translate method_name, options
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
[:ones, :teens, :tens, :tens_with_ones, :hundreds].each do |method_name|
|
15
|
+
define_method(method_name) { |*args|
|
16
|
+
options = args.first || {}
|
17
|
+
translate method_name, @figures.send(method_name), options
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
[:megs].each do |method_name|
|
22
|
+
define_method(method_name) { |*args|
|
23
|
+
options = args.first || {}
|
24
|
+
translate method_name, @current_capacity, options
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
def translate method_name, *args
|
29
|
+
translations.send method_name, *args
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|