Module: Unique
- Defined in:
- lib/unique.rb,
lib/unique/version.rb
Constant Summary collapse
- DEFAULT_MAX_TRIES =
4096
- NoUniqueObjects =
Class.new(StandardError)
- NoArgumentsAllowed =
Class.new(StandardError)
- VERSION =
'0.1.0'
- @@instances =
Array.new
Class Method Summary collapse
Class Method Details
.max_tries ⇒ Object
10 11 12 |
# File 'lib/unique.rb', line 10 def self.max_tries @max_tries end |
.max_tries=(num) ⇒ Object
9 10 11 12 13 14 |
# 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, &block) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 |
# 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! ⇒ Object
30 31 32 |
# File 'lib/unique.rb', line 30 def self.reset! @@instances = Array.new end |