Sha256: 37c7dc202523a85b9e02d9f8ccb764b4a50623fd7b4a51e22e584587f23bccab
Contents?: true
Size: 936 Bytes
Versions: 8
Compression:
Stored size: 936 Bytes
Contents
module Approvals class Filter attr_reader :filters def initialize(filters) @filters = filters @placeholder = {} end def apply hash_or_array if @filters.any? censored(hash_or_array) else hash_or_array end end def censored value, key=nil case value when Array value.map { |item| censored(item) } when Hash Hash[value.map { |key, value| [key, censored(value, key)] }] else if value.nil? nil elsif key && placeholder_for(key) "<#{placeholder_for(key)}>" else value end end end def placeholder_for key return @placeholder[key] if @placeholder.key? key applicable_filters = filters.select do |placeholder, pattern| pattern && key.match(pattern) end @placeholder[key] = applicable_filters.keys.last end end end
Version data entries
8 entries across 8 versions & 1 rubygems