Class: Loga::ParameterFilter::CompiledFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/loga/parameter_filter.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(regexps) ⇒ CompiledFilter

Returns a new instance of CompiledFilter.



42
43
44
# File 'lib/loga/parameter_filter.rb', line 42

def initialize(regexps)
  @regexps = regexps
end

Instance Attribute Details

#regexpsObject (readonly)

Returns the value of attribute regexps.



40
41
42
# File 'lib/loga/parameter_filter.rb', line 40

def regexps
  @regexps
end

Class Method Details

.compile(filters) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/loga/parameter_filter.rb', line 22

def self.compile(filters)
  ->(params) { params.dup } if filters.empty?

  regexps = []
  strings = []

  filters.each do |item|
    if item.is_a?(Regexp)
      regexps << item
    else
      strings << Regexp.escape(item.to_s)
    end
  end

  regexps << Regexp.new(strings.join('|'), true) unless strings.empty?
  new regexps
end

Instance Method Details

#call(original_params) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/loga/parameter_filter.rb', line 46

def call(original_params)
  filtered_params = {}

  original_params.each do |key, value|
    if regexps.any? { |r| key =~ r }
      value = FILTERED
    elsif value.is_a?(Hash)
      value = call(value)
    elsif value.is_a?(Array)
      value = value.map { |v| v.is_a?(Hash) ? call(v) : v }
    end

    filtered_params[key] = value
  end

  filtered_params
end