Module: Pry::Memory::Generators

Extended by:
Generators
Included in:
Generators
Defined in:
lib/pry/memory/generators.rb

Overview

Module for generating generators (yes-yes)

Two commonly used (probably) strategies are pre-defined:

1. :abc - generates a/b/c/d... sequence
2. :a1a2 - generates a1/a2/a3... sequence

Examples:

g = Pry::Memory::Generators.new { |counter| counter * 2}
g.generate
# => 2
g.next!; g.generate
# => 4

Constant Summary collapse

PREDEFINED =
{
  :abc => new { |counter| ('a'..'z').to_a[counter - 1] },
  :a1a2 => new { |counter| "a#{counter}" }
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#counterObject



17
18
19
# File 'lib/pry/memory/generators.rb', line 17

def counter
  @counter ||= 1
end

Instance Method Details

#new(&block) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/pry/memory/generators.rb', line 26

def new(&block)
  Class.new do
    define_method :generate do
      block.call(Pry::Memory::Generators.counter)
    end

    define_method :next! do
      Pry::Memory::Generators.counter += 1
    end
  end.new
end

#reset_counter!Object



22
23
24
# File 'lib/pry/memory/generators.rb', line 22

def reset_counter!
  @counter = 1
end