Class: Hegel::Generators::OneOfGenerator
- Inherits:
-
Hegel::Generator
- Object
- Hegel::Generator
- Hegel::Generators::OneOfGenerator
- Defined in:
- lib/hegel/generators.rb,
sig/hegel.rbs
Overview
Hegel::Syntax::Methods#one_of. Draws from one of generators, picked
by drawing an index in [0, generators.size - 1].
Instance Method Summary collapse
- #do_draw(tc) ⇒ Object
-
#initialize(generators) ⇒ OneOfGenerator
constructor
A new instance of OneOfGenerator.
Methods inherited from Hegel::Generator
Constructor Details
#initialize(generators) ⇒ OneOfGenerator
Returns a new instance of OneOfGenerator.
229 230 231 232 |
# File 'lib/hegel/generators.rb', line 229 def initialize(generators) super() @generators = generators end |
Instance Method Details
#do_draw(tc) ⇒ Object
234 235 236 237 238 239 240 241 242 243 244 |
# File 'lib/hegel/generators.rb', line 234 def do_draw(tc) raise Hegel::Error, "one_of: at least one generator is required" if @generators.empty? tc.start_span(LibHegel::HEGEL_LABEL_ONE_OF) begin index = tc.generate_integer(0, @generators.size - 1) @generators[index].do_draw(tc) ensure tc.stop_span(discard: false) end end |