/
options.rb
53 lines (44 loc) · 1.62 KB
/
options.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# frozen_string_literal: true
require 'numbers_and_words/strategies/figures_converter/options/en'
require 'numbers_and_words/strategies/figures_converter/options/en-GB'
require 'numbers_and_words/strategies/figures_converter/options/es'
require 'numbers_and_words/strategies/figures_converter/options/hu'
require 'numbers_and_words/strategies/figures_converter/options/pt-BR'
require 'numbers_and_words/strategies/figures_converter/options/ru'
require 'numbers_and_words/strategies/figures_converter/options/ua'
require 'numbers_and_words/strategies/figures_converter/options/cs'
module NumbersAndWords
module Strategies
module FiguresConverter
module Options
class Proxy
attr_accessor :strategy, :options
def initialize(strategy, options)
@strategy = strategy
@options = options
end
def method_missing(method_name, *args, &block)
method = Object.const_get(proxy_class_name(method_name))
if method
method.new(self, args, block)
else
super
end
rescue NameError
nil
end
def respond_to_missing?(method_name, include_private = false)
Object.const_get(proxy_class_name(method_name)) || super
end
private
def proxy_class_name(method_name)
"#{module_name}::#{I18n.language_class_name}::#{method_name.to_s.split('_').collect(&:capitalize).join}"
end
def module_name
self.class.name.split('::')[0..-2].join '::'
end
end
end
end
end
end