Module: Feat::Segments
- Defined in:
- lib/feat/segments.rb
Class Method Summary collapse
- .match_condition(cond, ctx, datafile) ⇒ Object
-
.match_segment(segment_key, ctx, datafile) ⇒ Object
True iff context matches the segment.
Class Method Details
.match_condition(cond, ctx, datafile) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/feat/segments.rb', line 18 def match_condition(cond, ctx, datafile) case cond.operator when "segment_match" keys = cond.values.select { |v| v.is_a?(String) } keys.any? { |k| match_segment(k, ctx, datafile) } when "segment_not_match" keys = cond.values.select { |v| v.is_a?(String) } !keys.any? { |k| match_segment(k, ctx, datafile) } else lhs = ContextResolver.resolve_attribute(ctx, cond.attributePath) Operators.match(cond.operator, lhs, cond.values) end end |
.match_segment(segment_key, ctx, datafile) ⇒ Object
True iff context matches the segment. Unknown segment keys evaluate to false (never raise).
7 8 9 10 11 12 13 14 15 16 |
# File 'lib/feat/segments.rb', line 7 def match_segment(segment_key, ctx, datafile) seg = datafile.segments[segment_key] return false if seg.nil? seg.rules.any? do |rule| next false if rule.conditions.empty? rule.conditions.all? { |cond| match_condition(cond, ctx, datafile) } end end |