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
-