Module: BankExchangeApi::Param

Included in:
Request::Base
Defined in:
lib/bank_exchange_api/param.rb

Instance Method Summary collapse

Instance Method Details

#param(*names, klass) ⇒ Object



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
# File 'lib/bank_exchange_api/param.rb', line 3

def param(*names, klass)
  names.each do |name|
    class_eval "      def \#{name}=(value)\n        @\#{name}=value\n      end\n\n      def \#{name}\n        value = @\#{name} if defined?(@\#{name})\n\n        @_\#{name}_ ||= case \#{klass}.name\n          when 'Array'\n            Array(value)\n          when 'String'\n            String(value) if value\n          when 'Integer'\n            Integer(value) if value\n          when 'Date'\n            if value\n              value.is_a?(Date) ? value : Date.parse(value.to_s)\n            end\n          else\n            raise UnsupportedParamClass, \"Provide \#{klass} class processing\"\n        end\n      end\n\n      def \#{name}!\n        self.\#{name} || (raise MissingRequiredParam, \"Param '\#{name}' is required but missing\")\n      end\n    METHODS\n  end\nend\n", __FILE__, __LINE__ + 1