Class: SplitIoClient::Helpers::EvaluatorHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/splitclient-rb/helpers/evaluator_helper.rb

Class Method Summary collapse

Class Method Details

.matcher_instance(type, condition, matcher, segments_repository, rb_segment_repository) ⇒ Object



29
30
31
32
33
34
# File 'lib/splitclient-rb/helpers/evaluator_helper.rb', line 29

def self.matcher_instance(type, condition, matcher, segments_repository, rb_segment_repository)
  condition.send(
    "matcher_#{type.downcase}",
    matcher: matcher, segments_repository: segments_repository, rule_based_segments_repository: rb_segment_repository
  )
end

.matcher_type(condition, segments_repository, rb_segment_repository) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/splitclient-rb/helpers/evaluator_helper.rb', line 6

def self.matcher_type(condition, segments_repository, rb_segment_repository)
  matchers = []
  segments_repository.adapter.pipelined do
    condition.matchers.each do |matcher|
      matchers << if matcher[:negate]
                    condition.negation_matcher(matcher_instance(matcher[:matcherType], condition,
                                                                matcher, segments_repository,
                                                                rb_segment_repository))
                  else
                    matcher_instance(matcher[:matcherType], condition, matcher, segments_repository, rb_segment_repository)
                  end
    end
  end
  final_matcher = condition.create_condition_matcher(matchers)

  if final_matcher.nil?
    config.logger.error('Invalid matcher type')
  else
    final_matcher
  end
  final_matcher
end