Class: RedAlert::Cleaner
- Inherits:
-
Object
- Object
- RedAlert::Cleaner
- Defined in:
- lib/red_alert/cleaner.rb
Constant Summary collapse
- FILTERED_TEXT =
'[REMOVED]'
- RECURSIVE_TEXT =
'[RECURSIVE STRUCTURE]'
Instance Attribute Summary collapse
-
#filter_keys ⇒ Object
readonly
Returns the value of attribute filter_keys.
Instance Method Summary collapse
- #format(value, stack = Set.new) ⇒ Object
-
#initialize(filter_keys) ⇒ Cleaner
constructor
A new instance of Cleaner.
- #scrub(params) ⇒ Object
Constructor Details
#initialize(filter_keys) ⇒ Cleaner
Returns a new instance of Cleaner.
8 9 10 |
# File 'lib/red_alert/cleaner.rb', line 8 def initialize(filter_keys) @filter_keys = filter_keys.to_set end |
Instance Attribute Details
#filter_keys ⇒ Object (readonly)
Returns the value of attribute filter_keys.
6 7 8 |
# File 'lib/red_alert/cleaner.rb', line 6 def filter_keys @filter_keys end |
Instance Method Details
#format(value, stack = Set.new) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/red_alert/cleaner.rb', line 23 def format(value, stack = Set.new) return RECURSIVE_TEXT if stack.include? value.object_id if value.respond_to? :to_ary value.map{|v| format v, stack + [value.object_id]} elsif value.respond_to? :to_hash value.each_with_object({}){|(k,v), memo| memo[k] = format v, stack + [value.object_id]} else value.nil? ? nil : value.to_s end end |
#scrub(params) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/red_alert/cleaner.rb', line 12 def scrub(params) formatted = format(params) formatted.each do |key, value| if filter_keys.include? key formatted[key] = FILTERED_TEXT elsif value.respond_to? :to_hash formatted[key] = scrub value end end end |