module DataCleansing

Constants

VERSION

Public Class Methods

clean(name, value, params = nil, binding = nil) click to toggle source

Run the specified cleanser against the supplied value

# File lib/data_cleansing/data_cleansing.rb, line 31
def self.clean(name, value, params = nil, binding = nil)
  # Cleaner itself could be a custom Proc, otherwise do a global lookup for it
  proc = name.is_a?(Proc) ? name : DataCleansing.cleaner(name.to_sym)
  raise(ArgumentError, "No cleaner defined for #{name.inspect}") unless proc

  if proc.is_a?(Proc)
    if binding
      # Call the cleaner proc within the scope (binding) of the binding
      proc.arity == 1 ? binding.instance_exec(value, &proc) : binding.instance_exec(value, params, &proc)
    else
      proc.arity == 1 ? proc.call(value) : proc.call(value, params)
    end
  else
    (proc.method(:call).arity == 1 ? proc.call(value) : proc.call(value, params))
  end
end
cleaner(cleaner_name) click to toggle source

Returns the cleaner matching the supplied cleaner name

# File lib/data_cleansing/data_cleansing.rb, line 16
def self.cleaner(cleaner_name)
  @@global_cleaners[cleaner_name.to_sym]
end
masked_attributes() click to toggle source

Returns the Global list of attributes to mask in any log output

# File lib/data_cleansing/data_cleansing.rb, line 26
def self.masked_attributes
  @@masked_attributes.freeze
end
register_cleaner(name, cleaner = nil, &block) click to toggle source

Register a new cleaner Replaces any existing cleaner with the same name

# File lib/data_cleansing/data_cleansing.rb, line 10
def self.register_cleaner(name, cleaner = nil, &block)
  raise "Must supply a Proc with the cleaner" unless block || cleaner
  @@global_cleaners[name.to_sym] = cleaner || block
end
register_masked_attributes(*attributes) click to toggle source

Register Attributes to be masked out in any log output

# File lib/data_cleansing/data_cleansing.rb, line 21
def self.register_masked_attributes(*attributes)
  attributes.each {|attr| @@masked_attributes << attr.to_sym }
end