Sha256: 3fdcb2f02534523168e8eaa31716dd497697cb388229a1ebf2480d0a8356dee7
Contents?: true
Size: 1015 Bytes
Versions: 3
Compression:
Stored size: 1015 Bytes
Contents
# frozen_string_literal: true module Intercept module Strategy class WhiteList attr_reader :white_list, :fallback_strategy def initialize(white_list, fallback_strategy = nil) @white_list = parse_white_list white_list @fallback_strategy = fallback_strategy end def process(value) return value if value.nil? || value.empty? white_listed_value = white_list_value(value) if fallback_strategy && white_listed_value.empty? fallback_strategy.process(value) else white_listed_value end end private def parse_white_list(white_list) if white_list.respond_to?(:call) white_list else raise '@param white_list must respond to #call' end end def white_list_value(value) value.select do |unit| white_list.call.find do |regex| regex.match?(unit) end end.compact.uniq end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
intercept-0.2.5 | lib/intercept/strategy/white_list.rb |
intercept-0.2.2 | lib/intercept/strategy/white_list.rb |
intercept-0.2.1 | lib/intercept/strategy/white_list.rb |