module Dieses::Support::Kernel

Public Instance Methods

kwargs(kwargs, *keys, **defaults) click to toggle source
# File lib/dieses/support/kernel.rb, line 17
def kwargs(kwargs, *keys, **defaults) # rubocop:disable Metrics/MethodLength
  return (kwargs = kwargs.to_h) if keys.empty? && defaults.empty?

  hash = {}
  [*keys, *defaults.keys].each do |key|
    hash[key = key.to_sym] = if kwargs.key?(key)
                               kwargs[key]
                             elsif defaults.key?(key)
                               defaults[key]
                             else
                               Undefined
                             end
  end
  hash
end
kwargs_to_s(**kwargs) click to toggle source
# File lib/dieses/support/kernel.rb, line 6
def kwargs_to_s(**kwargs)
  new_kwargs = kwargs.transform_values do |value|
    case value
    when Array, Set              then value.to_a.join(' ')
    when String, Symbol, Numeric then value.to_s
    else                              raise ArgumentError, "Unexpected value type #{value.class}: #{value}"
    end
  end
  new_kwargs.map { |key, value| "#{key}='#{value}'" }.join ' '
end