class Chihiro::MaskUtil

Public Class Methods

mask(hash) click to toggle source
# File lib/chihiro/mask_util.rb, line 6
def mask(hash)
  return hash unless hash.is_a? Hash
  
  hash.each do |key, value|
    if value.is_a? Hash
      hash[key] = mask(value)
    else
      hash[key] = mask_item(key, value)
    end
  end
end

Private Class Methods

mask_all_characters() click to toggle source
# File lib/chihiro/mask_util.rb, line 20
def mask_all_characters
  lambda { |value| value.to_s.gsub(/./, '*') }
end
mask_email() click to toggle source
# File lib/chihiro/mask_util.rb, line 24
def mask_email
  lambda { |value| value.to_s.gsub(/(.{1,4}?(?=@)|(?<=@).{1,4})/, '****') }
end
mask_item(key, origin_str) click to toggle source
# File lib/chihiro/mask_util.rb, line 43
def mask_item(key, origin_str)
  mask_proc = masks[key.to_s]
  return origin_str unless mask_proc
  mask_proc.call(origin_str)
end
masks() click to toggle source
# File lib/chihiro/mask_util.rb, line 28
def masks
  @all_masks ||= {
    'private_key' => mask_all_characters,
    'password' => mask_all_characters,
    'account_number' => mask_all_characters,
    'token' => mask_all_characters,
    'otp' => mask_all_characters,
    'current_password' => mask_all_characters,
    'new_password' => mask_all_characters,
    'email' => mask_email,
    'user_email' => mask_email,
    'secret_key' => mask_all_characters
  }
end