class Intercept::Strategy::Mapper
Attributes
bucket_map[R]
fallback_strategy[R]
Public Class Methods
new(bucket_map, fallback_strategy = nil)
click to toggle source
# File lib/intercept/strategy/mapper.rb, line 8 def initialize(bucket_map, fallback_strategy = nil) @bucket_map = parse_bucket_map bucket_map @fallback_strategy = fallback_strategy end
Public Instance Methods
process(value)
click to toggle source
# File lib/intercept/strategy/mapper.rb, line 13 def process(value) return value if value.nil? || value.empty? mapped_value = map_value(value) if fallback_strategy && mapped_value.empty? fallback_strategy.process(value) else mapped_value end end
Private Instance Methods
map_value(value)
click to toggle source
# File lib/intercept/strategy/mapper.rb, line 35 def map_value(value) value.map do |unit| bucket_map.call.find do |bucket, _| bucket.match?(unit) end&.fetch(1) end.compact.uniq end
parse_bucket_map(bucket_map)
click to toggle source
# File lib/intercept/strategy/mapper.rb, line 27 def parse_bucket_map(bucket_map) if bucket_map.respond_to?(:call) bucket_map else raise '@param bucket_map must respond to #call' end end