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