Sha256: e20427901934d50888d2e031e9fb63a31dc733610886be3d13d8d120e108378d

Contents?: true

Size: 986 Bytes

Versions: 1

Compression:

Stored size: 986 Bytes

Contents

# Copyright:: Copyright (c) 2004  Nicolas Despres. All rights reserved.
# Author::    Nicolas Despres  <polrop@lrde.epita.fr>.
# License::   Gnu General Public License.
# Revision::  $Id: generate_id.rb 214 2005-05-06 13:12:41Z ertai $


require 'md5'

module Kernel

  def generate_id(&already_exist)
    md5 = Digest::MD5::new
    id = ''
    begin
      md5.update(id)
      md5.update(Time.now.to_s)
      md5.update(rand.to_s)
      md5.update($$.to_s)
      md5.update($0)
      id = md5.hexdigest[0,16]
    end while block_given? and already_exist[id]
    id
  end

end # module Kernel



if $0 == __FILE__
  require 'test/unit'
  class GenerateIdTest < Test::Unit::TestCase
    def test_simple
      tab = []
      100.times { tab << generate_id }
      assert_equal(tab.size, tab.uniq.size)
    end
    def test_simple
      tab = []
      bool = true
      100.times { tab << generate_id { bool = !bool ; bool } }
      assert_equal(tab.size, tab.uniq.size)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vcs-0.2.148 ruby_ex/generate_id.rb