Class: Siftly::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/siftly/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(enabled_filters: [], filter_configs: {}, aggregator: :score, threshold: 1.0, failure_mode: :record, instrumenter: nil) ⇒ Config

Returns a new instance of Config.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/siftly/config.rb', line 8

def initialize(
  enabled_filters: [],
  filter_configs: {},
  aggregator: :score,
  threshold: 1.0,
  failure_mode: :record,
  instrumenter: nil
)
  @enabled_filters = enabled_filters.map(&:to_sym)
  @filter_configs = normalize_filter_configs(filter_configs)
  @aggregator = aggregator
  @threshold = threshold
  @failure_mode = failure_mode
  @instrumenter = instrumenter
end

Instance Attribute Details

#aggregatorObject

Returns the value of attribute aggregator.



5
6
7
# File 'lib/siftly/config.rb', line 5

def aggregator
  @aggregator
end

#enabled_filtersObject (readonly)

Returns the value of attribute enabled_filters.



6
7
8
# File 'lib/siftly/config.rb', line 6

def enabled_filters
  @enabled_filters
end

#failure_modeObject

Returns the value of attribute failure_mode.



5
6
7
# File 'lib/siftly/config.rb', line 5

def failure_mode
  @failure_mode
end

#instrumenterObject

Returns the value of attribute instrumenter.



5
6
7
# File 'lib/siftly/config.rb', line 5

def instrumenter
  @instrumenter
end

#thresholdObject

Returns the value of attribute threshold.



5
6
7
# File 'lib/siftly/config.rb', line 5

def threshold
  @threshold
end

Instance Method Details

#dupObject



45
46
47
48
49
50
51
52
53
54
# File 'lib/siftly/config.rb', line 45

def dup
  self.class.new(
    enabled_filters: enabled_filters.dup,
    filter_configs: filter_configs.transform_values(&:to_h),
    aggregator: aggregator,
    threshold: threshold,
    failure_mode: failure_mode,
    instrumenter: instrumenter
  )
end

#filter(key) {|filter_config| ... } ⇒ Object

Yields:

  • (filter_config)


30
31
32
33
34
# File 'lib/siftly/config.rb', line 30

def filter(key)
  filter_config = (@filter_configs[key.to_sym] ||= FilterConfig.new(key))
  yield(filter_config) if block_given?
  filter_config
end

#filter_config_for(key) ⇒ Object



36
37
38
39
# File 'lib/siftly/config.rb', line 36

def filter_config_for(key)
  existing = @filter_configs[key.to_sym]
  existing ? existing.merge({}) : FilterConfig.new(key)
end

#filter_configsObject



41
42
43
# File 'lib/siftly/config.rb', line 41

def filter_configs
  @filter_configs.transform_values { |config| config.merge({}) }
end

#use(key) ⇒ Object



24
25
26
27
28
# File 'lib/siftly/config.rb', line 24

def use(key)
  key = key.to_sym
  @enabled_filters << key unless @enabled_filters.include?(key)
  key
end