Module: Toolx::Core::Operation::ParamsWrapper

Defined in:
lib/toolx/core/operation/params_wrapper.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

ParamsArgumentError =
Class.new(::Toolx::Core::Errors::NestedStandardError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



29
30
31
32
33
# File 'lib/toolx/core/operation/params_wrapper.rb', line 29

def self.prepended(base)
  class << base
    prepend ClassMethods
  end
end

Instance Method Details

#initialize(*args, **kwargs) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/toolx/core/operation/params_wrapper.rb', line 7

def initialize(*args, **kwargs)
  params = args.first.nil? ? kwargs : args.first
  if self.class.const_defined?(:Params, false) && !params.is_a?(self.class.const_get(:Params, false))
    begin
      params = self.class.const_get(:Params, false).new(params.deep_symbolize_keys)
    rescue Dry::Struct::Error => e
      message = <<~MSG
        Expected #{self.class.name} keyword args: #{self.class.const_get(:Params, false)}
        Got: #{params.inspect}
        Message: #{e.message}
      MSG
      raise ParamsArgumentError.new(message, e)
    end
  end
  @params = params
  if args.present? || kwargs.present?
    super
  else
    super()
  end
end