lib/ldclient-rb/evaluation.rb in ldclient-rb-2.2.5 vs lib/ldclient-rb/evaluation.rb in ldclient-rb-2.2.6

- old
+ new

@@ -1,22 +1,21 @@ require "date" module LaunchDarkly - module Evaluation BUILTINS = [:key, :ip, :country, :email, :firstName, :lastName, :avatar, :name, :anonymous] OPERATORS = { - in: + in: lambda do |a, b| a == b end, - endsWith: + endsWith: lambda do |a, b| (a.is_a? String) && (a.end_with? b) end, - startsWith: + startsWith: lambda do |a, b| (a.is_a? String) && (a.start_with? b) end, matches: lambda do |a, b| @@ -48,25 +47,25 @@ if a.is_a? String a = DateTime.rfc3339(a).strftime('%Q').to_i end if b.is_a? String b = DateTime.rfc3339(b).strftime('%Q').to_i - end + end (a.is_a? Numeric) ? a < b : false rescue => e false end end, after: lambda do |a, b| begin if a.is_a? String - a = DateTime.rfc3339(a).strftime('%Q').to_i + a = DateTime.rfc3339(a).strftime("%Q").to_i end if b.is_a? String - b = DateTime.rfc3339(b).strftime('%Q').to_i - end + b = DateTime.rfc3339(b).strftime("%Q").to_i + end (a.is_a? Numeric) ? a > b : false rescue => e false end end @@ -91,37 +90,36 @@ events = [] if flag[:on] res = eval_internal(flag, user, store, events) - return {value: res, events: events} if !res.nil? + return { value: res, events: events } if !res.nil? end if !flag[:offVariation].nil? && flag[:offVariation] < flag[:variations].length value = flag[:variations][flag[:offVariation]] - return {value: value, events: events} + return { value: value, events: events } end - {value: nil, events: events} + { value: nil, events: events } end def eval_internal(flag, user, store, events) failed_prereq = false # Evaluate prerequisites, if any if !flag[:prerequisites].nil? flag[:prerequisites].each do |prerequisite| - prereq_flag = store.get(prerequisite[:key]) if prereq_flag.nil? || !prereq_flag[:on] failed_prereq = true else begin prereq_res = eval_internal(prereq_flag, user, store, events) variation = get_variation(prereq_flag, prerequisite[:variation]) events.push(kind: "feature", key: prereq_flag[:key], value: prereq_res, version: prereq_flag[:version], prereqOf: flag[:key]) - if prereq_res.nil? || prereq_res!= variation + if prereq_res.nil? || prereq_res != variation failed_prereq = true end rescue => exn @config.logger.error("[LDClient] Error evaluating prerequisite: #{exn.inspect}") failed_prereq = true @@ -147,11 +145,11 @@ target[:values].each do |value| return get_variation(flag, target[:variation]) if value == user[:key] end end end - end + end # Check custom rules if !flag[:rules].nil? flag[:rules].each do |rule| return variation_for_user(rule, user, flag) if rule_match_user(rule, user) @@ -200,11 +198,11 @@ end return maybe_negate(clause, false) end maybe_negate(clause, match_any(op, val, clause[:values])) - end + end def variation_for_user(rule, user, flag) if !rule[:variation].nil? # fixed variation return get_variation(flag, rule[:variation]) elsif !rule[:rollout].nil? # percentage rollout @@ -232,11 +230,11 @@ end hash_key = "%s.%s.%s" % [key, salt, id_hash] hash_val = (Digest::SHA1.hexdigest(hash_key))[0..14] - hash_val.to_i(16) / Float(0xFFFFFFFFFFFFFFF) + hash_val.to_i(16) / Float(0xFFFFFFFFFFFFFFF) end def user_value(user, attribute) attribute = attribute.to_sym @@ -258,8 +256,6 @@ return true if op.call(value, v) end return false end end - end -