class Rnotifier::ParameterFilter
Constants
- DEFAULT_FIELDS
- FILTERED
Public Class Methods
default_filter(params)
click to toggle source
# File lib/rnotifier/parameter_filter.rb, line 12 def self.default_filter(params) @default_filter ||= ParameterFilter.new(DEFAULT_FIELDS) @default_filter.filter(params) end
filter(params, filters)
click to toggle source
# File lib/rnotifier/parameter_filter.rb, line 7 def self.filter(params, filters) @filter ||= ParameterFilter.new(filters) @filter.filter(params) end
new(filters)
click to toggle source
# File lib/rnotifier/parameter_filter.rb, line 17 def initialize(filters) @filters = filters end
Public Instance Methods
filter(params)
click to toggle source
# File lib/rnotifier/parameter_filter.rb, line 21 def filter(params) if @filters && !@filters.empty? compiled_filter.call(params) else params end end
Private Instance Methods
compile_filter()
click to toggle source
# File lib/rnotifier/parameter_filter.rb, line 59 def compile_filter strings, regexps, blocks = [], [], [] @filters.each do |item| case item when NilClass when Proc blocks << item when Regexp regexps << item else strings << item.to_s end end regexps << Regexp.new(strings.join('|'), true) unless strings.empty? [regexps, blocks] end
compiled_filter()
click to toggle source
# File lib/rnotifier/parameter_filter.rb, line 31 def compiled_filter @compiled_filter ||= begin regexps, blocks = compile_filter lambda do |original_params| filtered_params = {} original_params.each do |key, value| if regexps.find { |r| key =~ r } value = FILTERED elsif value.is_a?(Hash) value = filter(value) elsif value.is_a?(Array) value = value.map { |v| v.is_a?(Hash) ? filter(v) : v } elsif blocks key = key.dup value = value.dup rescue value blocks.each { |b| b.call(key, value) } end filtered_params[key] = value end filtered_params end end end