class VerbotenKeys::Filterer

Public Class Methods

evaluate_key_value_pair(key, value) click to toggle source
# File lib/verboten_keys/filterer.rb, line 12
def self.evaluate_key_value_pair(key, value)
  key = key.to_sym

  if VerbotenKeys.configuration.forbidden_keys.include?(key)
    case VerbotenKeys.configuration.strategy
    when :remove
      return [nil, nil]
    when :nullify
      return [key, nil]
    else
      raise VerbotenKeys::Errors::StrategyNotFoundError(VerbotenKeys.configuration.strategy)
    end
  end

  case value
  when Hash
    return [key, VerbotenKeys::Filterer.filter_forbidden_keys(value)]
  when Array
    return [key, value.map { |item| item.is_a?(Hash) ? VerbotenKeys::Filterer.filter_forbidden_keys(item) : item }]
  end

  [key, value]
end
filter_forbidden_keys(hash) click to toggle source
# File lib/verboten_keys/filterer.rb, line 5
def self.filter_forbidden_keys(hash)
  hash
    .map { |k, v| evaluate_key_value_pair(k, v) }
    .to_h
    .delete_if { |k, _v| k.nil? }
end