Class: RightSupport::Notifier::Blacklister::RegularExpression

Inherits:
Base
  • Object
show all
Defined in:
lib/right_support/notifiers/blacklisters/regular_expression.rb

Overview

implements a blacklister that matches key paths by regular expression.

Direct Known Subclasses

Wildcard

Instance Attribute Summary collapse

Attributes inherited from Base

#replacement_value

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(regular_expressions, options = {}) ⇒ RegularExpression

Returns a new instance of RegularExpression.

Parameters:

  • regular_expressions (Array|Regexp|String)

    to blacklist

  • options (Hash) (defaults to: {})

Options Hash (options):

  • :delimiter (Object)

    present in regular expressions used to distinguish child data maps. defaults to slash (/).

  • :replacement_value (Object)

    of any kind including nil. default=‘HIDDEN’.



36
37
38
39
40
41
42
43
# File 'lib/right_support/notifiers/blacklisters/regular_expression.rb', line 36

def initialize(regular_expressions, options = {})
  super(options)
  options = {
    delimiter: '/'
  }.merge(options)
  @delimiter = options[:delimiter].to_s
  @regular_expressions = ::RightSupport::Notifier::Blacklister::RegularExpression.normalize_regular_expressions(regular_expressions)
end

Instance Attribute Details

#delimiterObject (readonly)

Returns the value of attribute delimiter.



28
29
30
# File 'lib/right_support/notifiers/blacklisters/regular_expression.rb', line 28

def delimiter
  @delimiter
end

Class Method Details

.normalize_regular_expressions(regular_expressions) ⇒ Object

Parameters:

  • regular_expressions (Array|Regexp|String)

    to normalize



51
52
53
# File 'lib/right_support/notifiers/blacklisters/regular_expression.rb', line 51

def self.normalize_regular_expressions(regular_expressions)
  ::Set.new(Array(regular_expressions).map(&self.method(:to_regexp)))
end

.to_regexp(re) ⇒ Regexp

compiles a regular expression, if necessary.

Parameters:

  • re (String|Regexp)

    to compile or accept

Returns:

  • (Regexp)

    regular expression



60
61
62
63
64
65
66
67
68
69
# File 'lib/right_support/notifiers/blacklisters/regular_expression.rb', line 60

def self.to_regexp(re)
  case re
  when ::String
    ::Regexp.compile(re)
  when ::Regexp
    re
  else
    fail "Unexpected type: #{re.class.name}"
  end
end

Instance Method Details

#filter(data) ⇒ Object

implements RightSupport::Notifier::Blacklister::Base#filter



46
47
48
# File 'lib/right_support/notifiers/blacklisters/regular_expression.rb', line 46

def filter(data)
  recursive_filter(data, nil)
end