class ReeMapper::FieldsFilter

def self.build(only, except)

def self.build(only, except)
  strategy = if !only.nil?
    OnlyStrategy.new(only, except)
  elsif !except.nil?
    ExceptStrategy.new(except)
  else
    return nil
  end
  nested_fields_filters = {}
  only = only&.select { _1.is_a? Hash }&.reduce(&:merge)
  except = except&.select { _1.is_a? Hash }&.reduce(&:merge)
  only&.each { nested_fields_filters[_1] = build(_2, except&.dig(_1)) }
  except&.each { nested_fields_filters[_1] ||= build(nil, _2) }
  new(strategy, nested_fields_filters)
end

def allow?(field)

def allow?(field)
  strategy.allow?(field)
end

def filter_for(field)

def filter_for(field)
  nested_fields_filters[field]
end

def initialize(strategy, nested_fields_filters)

def initialize(strategy, nested_fields_filters)
  @strategy              = strategy
  @nested_fields_filters = nested_fields_filters
end