Class: Hackle::Bucketer

Inherits:
Object
  • Object
show all
Defined in:
lib/hackle/internal/evaluation/bucketer/bucketer.rb

Instance Method Summary collapse

Constructor Details

#initialize(hasher:) ⇒ Bucketer

Returns a new instance of Bucketer.

Parameters:



9
10
11
12
# File 'lib/hackle/internal/evaluation/bucketer/bucketer.rb', line 9

def initialize(hasher:)
  # @type [Hasher]
  @hasher = hasher
end

Instance Method Details

#bucketing(bucket, identifier) ⇒ Slot?

Parameters:

  • bucket (Bucket)
  • identifier (String)

Returns:



17
18
19
20
# File 'lib/hackle/internal/evaluation/bucketer/bucketer.rb', line 17

def bucketing(bucket, identifier)
  slot_number = calculate_slot_number(seed: bucket.seed, slot_size: bucket.slot_size, value: identifier)
  bucket.get_slot_or_nil(slot_number)
end

#calculate_slot_number(seed:, slot_size:, value:) ⇒ Integer

Parameters:

  • seed (Integer)
  • slot_size (Integer)
  • value (String)

Returns:

  • (Integer)


26
27
28
29
# File 'lib/hackle/internal/evaluation/bucketer/bucketer.rb', line 26

def calculate_slot_number(seed:, slot_size:, value:)
  hash_value = @hasher.hash(value, seed)
  hash_value.abs % slot_size
end