module Unique

Constants

DEFAULT_MAX_TRIES
NoArgumentsAllowed
NoUniqueObjects
VERSION

Public Class Methods

max_tries() click to toggle source
# File lib/unique.rb, line 10
def self.max_tries
  @max_tries
end
max_tries=(num) click to toggle source
# File lib/unique.rb, line 9
def max_tries= num
  def self.max_tries
    @max_tries
  end
  @max_tries= [num, 1].max.to_i
end
next!(*args) { || ... } click to toggle source
# File lib/unique.rb, line 17
def self.next! *args, &block
  raise NoArgumentsAllowed, 'Only a block is accepted.' unless args.empty? && block.kind_of?(Proc)
  tries= 0
  loop {
    tries+= 1
    raise NoUniqueObjects, "An unused, unique object could not be found in #{max_tries} tries (#{block.source_location.inspect})" if tries> max_tries
    unless @@instances.include?(instance= yield)
      @@instances.unshift instance
      break instance
    end
  }
end
reset!() click to toggle source
# File lib/unique.rb, line 30
def self.reset!
  @@instances = Array.new
end