1818module Optimizely
1919
2020 V1_CONFIG_VERSION = '1'
21- V2_CONFIG_VERSION = '2'
2221
23- SUPPORTED_VERSIONS = [ V2_CONFIG_VERSION ]
2422 UNSUPPORTED_VERSIONS = [ V1_CONFIG_VERSION ]
2523
2624 class ProjectConfig
@@ -47,9 +45,11 @@ class ProjectConfig
4745 attr_reader :event_key_map
4846 attr_reader :experiment_id_map
4947 attr_reader :experiment_key_map
48+ attr_reader :feature_flag_key_map
5049 attr_reader :group_key_map
5150 attr_reader :audience_id_map
5251 attr_reader :variation_id_map
52+ attr_reader :variation_id_to_variable_usage_map
5353 attr_reader :variation_key_map
5454
5555 def initialize ( datafile , logger , error_handler )
@@ -73,6 +73,7 @@ def initialize(datafile, logger, error_handler)
7373 @attributes = config [ 'attributes' ]
7474 @events = config [ 'events' ]
7575 @experiments = config [ 'experiments' ]
76+ @feature_flags = config . fetch ( 'featureFlags' , [ ] )
7677 @revision = config [ 'revision' ]
7778 @audiences = config [ 'audiences' ]
7879 @groups = config . fetch ( 'groups' , [ ] )
@@ -92,11 +93,21 @@ def initialize(datafile, logger, error_handler)
9293 @audience_id_map = generate_key_map ( @audiences , 'id' )
9394 @variation_id_map = { }
9495 @variation_key_map = { }
96+ @variation_id_to_variable_usage_map = { }
9597 @experiment_key_map . each do |key , exp |
9698 variations = exp . fetch ( 'variations' )
9799 @variation_id_map [ key ] = generate_key_map ( variations , 'id' )
98100 @variation_key_map [ key ] = generate_key_map ( variations , 'key' )
101+
102+ variations . each do |variation |
103+ variation_id = variation [ 'id' ]
104+ variation_variables = variation [ 'variables' ]
105+ unless variation_variables . nil?
106+ @variation_id_to_variable_usage_map [ variation_id ] = generate_key_map ( variation_variables , 'id' )
107+ end
108+ end
99109 end
110+ @feature_flag_key_map = generate_key_map ( @feature_flags , 'key' )
100111 @parsing_succeeded = true
101112 end
102113
0 commit comments