class Rox::Core::FlagSetter

Public Class Methods

new(flag_repository, parser, experiment_repository, impression_invoker) click to toggle source
# File lib/rox/core/entities/flag_setter.rb, line 4
def initialize(flag_repository, parser, experiment_repository, impression_invoker)
  @flag_repository = flag_repository
  @parser = parser
  @experiment_repository = experiment_repository
  @impression_invoker = impression_invoker

  @flag_repository.register_flag_added_handler do |string|
    exp = @experiment_repository.experiment_by_flag(string.name)
    set_flag_data(string, exp)
  end
end

Public Instance Methods

set_experiments() click to toggle source
# File lib/rox/core/entities/flag_setter.rb, line 16
def set_experiments
  flags_with_condition = []

  @experiment_repository.all_experiments.each do |exp|
    exp.flags.each do |flag_name|
      flag = @flag_repository.flag(flag_name)
      unless flag.nil?
        set_flag_data(flag, exp)
        flags_with_condition << flag_name
      end
    end
  end

  @flag_repository.all_flags.each do |flag|
    set_flag_data(flag) unless flags_with_condition.include?(flag.name)
  end
end
set_flag_data(string, experiment = nil) click to toggle source
# File lib/rox/core/entities/flag_setter.rb, line 34
def set_flag_data(string, experiment = nil)
  string.set_for_evaluation(@parser, experiment, @impression_invoker)
end