Class: Properb::Generators::SelectedGenerator

Inherits:
Properb::Generator show all
Defined in:
lib/properb/generators/selected_generator.rb

Instance Method Summary collapse

Methods inherited from Properb::Generator

#map, #or, #reject, #select, #sized, #to_properb_generator

Constructor Details

#initialize(generator, num_attempts: 10, &block) ⇒ SelectedGenerator

Returns a new instance of SelectedGenerator.



4
5
6
7
8
# File 'lib/properb/generators/selected_generator.rb', line 4

def initialize(generator, num_attempts: 10, &block)
  @generator = generator
  @num_attempts = num_attempts
  @block = block
end

Instance Method Details

#generate_value(random, size) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/properb/generators/selected_generator.rb', line 10

def generate_value(random, size)
  @num_attempts.times do
    generated = @generator.generate_value(random, size)
    return generated.select(&@block).first if @block.call(generated.value)
  end
  raise "Could not generate a value after #{@num_attempts} attempts"
end