Class: RightSupport::Notifier::Blacklister::SnakeCase

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

Overview

implements a blacklister that matches snake_case keys.

Instance Attribute Summary

Attributes inherited from Base

#replacement_value

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(keys, options = {}) ⇒ SnakeCase

Returns a new instance of SnakeCase.

Parameters:

  • keys (Array|String)

    to blacklist

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

Options Hash (options):

  • :replacement_value (Object)

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



32
33
34
35
# File 'lib/right_support/notifiers/blacklisters/snake_case.rb', line 32

def initialize(keys, options = {})
  super(options)
  @keys = ::RightSupport::Notifier::Blacklister::SnakeCase.normalize_keys(keys)
end

Class Method Details

.normalize_keys(keys) ⇒ Object

Parameters:

  • keys (Array|String)

    to normalize



48
49
50
# File 'lib/right_support/notifiers/blacklisters/snake_case.rb', line 48

def self.normalize_keys(keys)
  ::Set.new(Array(keys).map(&self.method(:to_snake_case)))
end

.to_snake_case(key) ⇒ Object

converts a key (field name) to snake_case



53
54
55
56
57
58
# File 'lib/right_support/notifiers/blacklisters/snake_case.rb', line 53

def self.to_snake_case(key)
  key.to_s.
      gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
      gsub(/([a-z])([A-Z])/, '\1_\2').
      downcase
end

Instance Method Details

#filter(data) ⇒ Object

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



38
39
40
41
42
43
44
45
# File 'lib/right_support/notifiers/blacklisters/snake_case.rb', line 38

def filter(data)
  data.keys.each do |key|
    if @keys.include?(self.class.to_snake_case(key))
      data[key] = replacement_value
    end
  end
  true
end