Sha256: 27065446832a2bfea48232a6dac03cb029da4148efb1a23f51372a0cdb120b3f
Contents?: true
Size: 1.06 KB
Versions: 10
Compression:
Stored size: 1.06 KB
Contents
require 'featureflow/conditions' require 'digest/sha1' module Featureflow class EvaluateHelpers def self.rule_matches(rule, context) if rule['defaultRule'] true # the default rule will always match true else rule['audience']['conditions'].all? do |condition| context_values = context[:values][condition['target']] # convert to array to work with test Array(context_values).any? do |value| Conditions.test condition['operator'], value, condition['values'] end end end end def self.get_variant_split_key(variant_splits, variant_value) percent = 0 variant_splits.each do |variant_split| percent += variant_split['split'] return variant_split['variantKey'] if percent >= variant_value end end def self.calculate_hash(salt = '1', feature = 'feature', key = 'anonymous') (Digest::SHA1.hexdigest [salt, feature, key].join(':'))[0..14]; end def self.get_variant_value(hash) Integer(hash, 16) % 100 + 1 end end end
Version data entries
10 entries across 10 versions & 1 rubygems