Skip to content

Commit ba057cb

Browse files
committed
feat: moved-engine-to-core
1 parent 2aeb65a commit ba057cb

File tree

2 files changed

+61
-58
lines changed

2 files changed

+61
-58
lines changed

lib/flagsmith/engine/evaluation/core.rb

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,70 @@ module Core
99
#
1010
# @param evaluation_context [Hash] The evaluation context
1111
# @return [Hash] Evaluation result with flags and segments
12-
def self.get_evaluation_result(_evaluation_context)
13-
# TODO: Implement core evaluation logic
12+
# returns EvaluationResultWithMetadata
13+
def get_evaluation_result(evaluation_context)
14+
segments, segment_overrides = evaluate_segments(evaluation_context)
15+
flags = evaluate_features(evaluation_context, segment_overrides)
1416
{
15-
flags: {},
16-
segments: []
17+
flags: flags,
18+
segments: segments,
1719
}
1820
end
21+
22+
# Returns { segments: EvaluationResultSegments; segmentOverrides: Record<string, SegmentOverride>; }
23+
def evaluate_segments(evaluation_context)
24+
if evaluation_context.identities.nil? || evaluation_context.segments.nil?
25+
return [], {}
26+
end
27+
segments = []
28+
segment_overrides = process_segment_overrides(evaluation_context.identities)
29+
return segments, segment_overrides
30+
end
31+
32+
# Returns Record<string: override.name, SegmentOverride>
33+
def process_segment_overrides(_identity_segments)
34+
segment_overrides = {}
35+
return segment_overrides
36+
end
37+
38+
# returns EvaluationResultFlags<Metadata>
39+
def evaluate_features(evaluation_context, _segment_overrides)
40+
raise NotImplementedError
41+
end
42+
43+
# Returns {value: any; reason?: string}
44+
def evaluate_feature_value(_feature, _identity_key)
45+
raise NotImplementedError
46+
end
47+
48+
# Returns {value: any; reason?: string}
49+
def get_multivariate_feature_value(_feature, _identity_key)
50+
raise NotImplementedError
51+
end
52+
53+
# returns boolean
54+
def should_apply_override(_override, _existing_overrides)
55+
raise NotImplementedError
56+
end
57+
58+
private
59+
60+
# returns boolean
61+
def higher_priority?(priority_a, priority_b)
62+
(priority_a || Float::INFINITY) < (priority_b || Float::INFINITY)
63+
end
64+
65+
def get_targeting_match_reason(match_object)
66+
type = match_object.type
67+
68+
if type == 'SEGMENT'
69+
return match_object.override ? "TARGETING_MATCH; segment=#{match_object.override.segment_name}" : 'DEFAULT'
70+
end
71+
72+
return "SPLIT; weight=#{match_object.weight}" if type == 'SPLIT'
73+
74+
'DEFAULT'
75+
end
1976
end
2077
end
2178
end

lib/flagsmith/engine/evaluation/engine.rb

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)