module ClientDataAdapter::InstanceMethods

Public Instance Methods

adapter(*args) click to toggle source

Main adapter method.

@param args [Symbol|String|Hash] @example

@book.adapter(:method1, method2: 'payload', method3: [:foo, :bar])
# File lib/client-data-adapter/instance_methods.rb, line 11
def adapter(*args)

  length = args.length

  if length == 0
    adapter_wrapper.__adapter__
  else
    Util.merge(
      adapter_wrapper.__adapter__,
      *args.map do |arg|
        if [String, Symbol].include?(arg.class)
          __merge_to_adapter__(arg.to_sym, nil)
        elsif arg.is_a?(Hash)
          arg.map { |k, v| __merge_to_adapter__(k, v) }
        else
          raise '[ERROR] Not available arguments type.'
        end
      end.flatten,
    )
  end
end

Private Instance Methods

__merge_to_adapter__(key, params) click to toggle source
# File lib/client-data-adapter/instance_methods.rb, line 35
def __merge_to_adapter__(key, params)
  {}.tap do |hah|
    hah["#{key}".to_sym] =
      adapter_wrapper.respond_to?(key) ?
        adapter_wrapper.public_send(key, *params) :
        public_send(key, *params)
  end
end