Class: SensitiveDataFilter::Scan

Inherits:
Object
  • Object
show all
Defined in:
lib/sensitive_data_filter/scan.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value) ⇒ Scan

Returns a new instance of Scan.



27
28
29
# File 'lib/sensitive_data_filter/scan.rb', line 27

def initialize(value)
  @value = value
end

Class Method Details

.scan(value) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/sensitive_data_filter/scan.rb', line 7

def self.scan(value)
  return scan_array(value) if value.is_a? Array
  return scan_hash(value) if value.is_a? Hash
  SensitiveDataFilter.enabled_types.map.with_object({}) { |scanner, matches|
    matches[scanner.name.split('::').last] = whitelist(scanner.scan(value))
  }
end

.scan_array(array) ⇒ Object



15
16
17
# File 'lib/sensitive_data_filter/scan.rb', line 15

def self.scan_array(array)
  array.map { |element| scan(element) }.inject(:collate) || {}
end

.scan_hash(hash) ⇒ Object



19
20
21
# File 'lib/sensitive_data_filter/scan.rb', line 19

def self.scan_hash(hash)
  hash.map { |key, value| scan(key).collate(scan(value)) }.inject(:collate) || {}
end

.whitelist(matches) ⇒ Object



23
24
25
# File 'lib/sensitive_data_filter/scan.rb', line 23

def self.whitelist(matches)
  matches.reject { |match| SensitiveDataFilter.whitelisted? match }
end

Instance Method Details

#matchesObject



31
32
33
# File 'lib/sensitive_data_filter/scan.rb', line 31

def matches
  @matches ||= self.class.scan(@value)
end

#matches?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/sensitive_data_filter/scan.rb', line 35

def matches?
  matches.values.any?(&:present?)
end