class Lenjador::Preprocessors::Blacklist

Constants

DEFAULT_ACTION
MASKED_VALUE
MASK_SYMBOL

Public Class Methods

new(config = {}) click to toggle source
# File lib/lenjador/preprocessors/blacklist.rb, line 13
def initialize(config = {})
  @fields_to_process = config[:fields].inject({}) do |mem, field|
    key = field.delete(:key)
    options = {action: DEFAULT_ACTION}.merge(field)
    validate_action_supported(options[:action])
    mem.merge(key => options)
  end
end

Public Instance Methods

process(data) click to toggle source
# File lib/lenjador/preprocessors/blacklist.rb, line 22
def process(data)
  case data
  when Hash
    data.inject({}) do |mem, (key, val)|
      if (field = @fields_to_process[key.to_s])
        send(action_method(field[:action]), mem, key, val)
      else
        mem.merge(key => process(val))
      end
    end
  when Array
    data.inject([]) do |mem, val|
      mem + [process(val)]
    end
  else
    data
  end
end

Private Instance Methods

action_method(action) click to toggle source
# File lib/lenjador/preprocessors/blacklist.rb, line 43
def action_method(action)
  "#{action}_field"
end
exclude_field(data, *)
Alias for: prune_field
mask_field(data, key, _val) click to toggle source
# File lib/lenjador/preprocessors/blacklist.rb, line 53
def mask_field(data, key, _val)
  data.merge(key => MASKED_VALUE)
end
prune_field(data, *) click to toggle source
# File lib/lenjador/preprocessors/blacklist.rb, line 57
def prune_field(data, *)
  data
end
Also aliased as: exclude_field
validate_action_supported(action) click to toggle source
# File lib/lenjador/preprocessors/blacklist.rb, line 47
def validate_action_supported(action)
  unless respond_to?(action_method(action).to_sym, true)
    raise UnsupportedActionException, "Action: #{action} is not supported"
  end
end