Changeset 30649 for lang/ruby/uuid/trunk/lib
- Timestamp:
- 03/01/09 22:04:49 (4 years ago)
- Files:
-
- 1 modified
-
lang/ruby/uuid/trunk/lib/uuid.rb (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/ruby/uuid/trunk/lib/uuid.rb
r30603 r30649 28 28 29 29 # Pure ruby UUID generator, which is compatible with RFC4122 30 UUID = Struct.new "UUID", :raw_bytes31 30 class UUID 32 31 # UUID epoch is 15th Oct. 1582 … … 34 33 35 34 private_class_method :new 35 36 private 37 def initialize str 38 tmp = str.unpack "C*" 39 @num = tmp.inject do |r, i| 40 r * 256 | i 41 end 42 @num.freeze 43 self.freeze 44 end 45 46 public 47 48 def raw_bytes 49 ret = String.new 50 tmp = @num 51 16.times do |i| 52 x, y = tmp.divmod 256 53 ret << y 54 tmp = x 55 end 56 ret.reverse! 57 ret 58 end 36 59 37 60 class << self … … 63 86 sum = sha1.digest 64 87 raw = mask 5, sum[0..15] 65 ret = new raw 66 ret.raw_bytes.freeze 67 ret.freeze 68 ret 88 new raw 69 89 end 70 90 … … 76 96 sum = md5.digest 77 97 raw = mask 3, sum[0..16] 78 ret = new raw 79 ret.raw_bytes.freeze 80 ret.freeze 81 ret 98 new raw 82 99 end 83 100 … … 88 105 rnd = [prand, prand, prand, prand].pack "N4" 89 106 raw = mask 4, rnd 90 ret = new raw 91 ret.raw_bytes.freeze 92 ret.freeze 93 ret 107 new raw 94 108 end 95 109 … … 177 191 str.gsub! %r/[^0-9A-Fa-f]/, '' 178 192 raw = str[0..31].to_a.pack 'H*' 179 ret = new raw 180 ret.raw_bytes.freeze 181 ret.freeze 182 ret 193 new raw 183 194 end 184 195 … … 187 198 def pack tl, tm, th, ch, cl, n 188 199 raw = [tl, tm, th, ch, cl, n].pack "NnnCCa6" 189 ret = new raw 190 ret.raw_bytes.freeze 191 ret.freeze 192 ret 200 new raw 193 201 end 194 202 end … … 254 262 end 255 263 alias urn to_uri 264 alias inspect to_uri 256 265 257 266 # Convert into 128-bit unsigned integer 258 267 # Typically a Bignum instance, but can be a Fixnum. 259 268 def to_int 260 tmp = self.raw_bytes.unpack "C*" 261 tmp.inject do |r, i| 262 r * 256 | i 263 end 269 @num 264 270 end 265 271 alias to_i to_int
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)