amplitude-experiment 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/amplitude-experiment.gemspec +2 -0
- data/lib/experiment/evaluation/evaluation.rb +23 -26
- data/lib/experiment/version.rb +1 -1
- metadata +30 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 695f535c46352189bd5e5cccfe34c17a75964c89ef371f7ee397ce6bcb76c55c
|
|
4
|
+
data.tar.gz: 05e993e6eb3318047cbbfc4865c559291bfd06c86701019c027e4a9a07b71d52
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7ad26b8d4673bf0e0287fbbed5f38fa64da5cb9396ce5dcf1cb10fbc3892f374f7270eec77f2b25083a8e5d157f5be638aecc65d5572c18ad9d6687bc0a87911
|
|
7
|
+
data.tar.gz: f4cb8b32ded5b8974e68f417d4abf306860b235a7271a823e3a62a4e8cad336223bbfeb992dba4cddd849a4b446a765f30fdb4289f00fdcc8378dac6e4af7101
|
|
@@ -18,7 +18,9 @@ Gem::Specification.new do |spec|
|
|
|
18
18
|
spec.require_paths = ['lib']
|
|
19
19
|
spec.extra_rdoc_files = ['README.md']
|
|
20
20
|
|
|
21
|
+
spec.add_dependency 'base64'
|
|
21
22
|
spec.add_dependency 'concurrent-ruby', '~> 1.2'
|
|
23
|
+
spec.add_dependency 'logger'
|
|
22
24
|
|
|
23
25
|
spec.add_development_dependency 'psych', '~> 4.0'
|
|
24
26
|
spec.add_development_dependency 'rake', '~> 13.0'
|
|
@@ -66,24 +66,25 @@ module AmplitudeExperiment
|
|
|
66
66
|
|
|
67
67
|
def match_condition(target, condition)
|
|
68
68
|
prop_value = Evaluation.select(target, condition.selector)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
prop_value_string_list = coerce_string_array(prop_value)
|
|
69
|
+
return match_null(condition.op, condition.values) unless prop_value
|
|
70
|
+
|
|
71
|
+
prop_value_string_list = coerce_string_array(prop_value)
|
|
72
|
+
if set_operator?(condition.op)
|
|
74
73
|
return false unless prop_value_string_list
|
|
75
74
|
|
|
76
75
|
match_set(prop_value_string_list, condition.op, condition.values)
|
|
76
|
+
elsif prop_value_string_list
|
|
77
|
+
match_strings_non_set(prop_value_string_list, condition.op, condition.values)
|
|
77
78
|
else
|
|
78
79
|
prop_value_string = coerce_string(prop_value)
|
|
79
|
-
|
|
80
|
-
match_string(prop_value_string, condition.op, condition.values)
|
|
81
|
-
else
|
|
82
|
-
false
|
|
83
|
-
end
|
|
80
|
+
prop_value_string ? match_string(prop_value_string, condition.op, condition.values) : false
|
|
84
81
|
end
|
|
85
82
|
end
|
|
86
83
|
|
|
84
|
+
def match_strings_non_set(prop_values, op, filter_values)
|
|
85
|
+
prop_values.any? { |v| match_string(v, op, filter_values) }
|
|
86
|
+
end
|
|
87
|
+
|
|
87
88
|
def get_hash(key)
|
|
88
89
|
Murmur3.hash32x86(key)
|
|
89
90
|
end
|
|
@@ -263,23 +264,19 @@ module AmplitudeExperiment
|
|
|
263
264
|
end
|
|
264
265
|
|
|
265
266
|
def coerce_string_array(value)
|
|
266
|
-
if value.is_a?(Array)
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
s = coerce_string(string_value)
|
|
276
|
-
s ? [s] : nil
|
|
277
|
-
end
|
|
278
|
-
rescue JSON::ParserError
|
|
279
|
-
s = coerce_string(string_value)
|
|
280
|
-
s ? [s] : nil
|
|
281
|
-
end
|
|
267
|
+
return value.map { |e| coerce_string(e) }.compact if value.is_a?(Array)
|
|
268
|
+
|
|
269
|
+
string_value = value.to_s
|
|
270
|
+
return nil unless string_value.start_with?('[')
|
|
271
|
+
|
|
272
|
+
begin
|
|
273
|
+
parsed_value = JSON.parse(string_value)
|
|
274
|
+
rescue JSON::ParserError
|
|
275
|
+
return nil
|
|
282
276
|
end
|
|
277
|
+
return nil unless parsed_value.is_a?(Array)
|
|
278
|
+
|
|
279
|
+
parsed_value.map { |e| coerce_string(e) }.compact
|
|
283
280
|
end
|
|
284
281
|
|
|
285
282
|
def set_operator?(op)
|
data/lib/experiment/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: amplitude-experiment
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.10.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Amplitude
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-04-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: base64
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: concurrent-ruby
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -24,6 +38,20 @@ dependencies:
|
|
|
24
38
|
- - "~>"
|
|
25
39
|
- !ruby/object:Gem::Version
|
|
26
40
|
version: '1.2'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: logger
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
27
55
|
- !ruby/object:Gem::Dependency
|
|
28
56
|
name: psych
|
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|