uuidtools 2.1.5 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG +4 -0
- data/README.md +2 -4
- data/lib/uuidtools.rb +88 -24
- data/lib/uuidtools/version.rb +2 -2
- data/spec/uuidtools/uuid_parsing_spec.rb +20 -1
- data/tasks/benchmark.rake +46 -27
- data/tasks/gem.rake +3 -8
- data/uuidtools.gemspec +42 -0
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a5cf7d8f6def3ddb0c325cfe8d2dec0404b73996c69f559888d74dad4f6519f1
|
4
|
+
data.tar.gz: 4ba7a0931d37d6f14f664e230d38610995d281167ab1c0e0ed2ea6355c93a060
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9ac42163867349a27f20100c859be1103dec0b5c402f7630371d8debadb8a760b399f4f4369a941111987ca53ab68775947431f21ce29c7d267efb2a88fcc2c
|
7
|
+
data.tar.gz: 20b1d43a62100484f52844a919ba4683ca774da910e572acb865d599af5b6ad795180418746039b7a9b2f24942350a00414ca3309c6987dbf93085330017842c
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
[](http://travis-ci.org/sporkmonger/uuidtools)
|
2
|
+
|
1
3
|
# UUIDTools
|
2
4
|
|
3
5
|
<dl>
|
@@ -7,10 +9,6 @@
|
|
7
9
|
<dt>License</dt><dd>Apache 2.0</dd>
|
8
10
|
</dl>
|
9
11
|
|
10
|
-
[](http://travis-ci.org/sporkmonger/uuidtools)
|
11
|
-
[](https://gemnasium.com/sporkmonger/uuidtools)
|
12
|
-
[](https://www.gittip.com/sporkmonger/ "Support Open Source Development w/ Gittip")
|
13
|
-
|
14
12
|
# Description
|
15
13
|
|
16
14
|
UUIDTools was designed to be a simple library for generating any
|
data/lib/uuidtools.rb
CHANGED
@@ -164,7 +164,7 @@ module UUIDTools
|
|
164
164
|
clock_seq_hi_and_reserved = uuid_components[3].to_i(16)
|
165
165
|
clock_seq_low = uuid_components[4].to_i(16)
|
166
166
|
nodes = []
|
167
|
-
|
167
|
+
6.times do |i|
|
168
168
|
nodes << uuid_components[5][(i * 2)..(i * 2) + 1].to_i(16)
|
169
169
|
end
|
170
170
|
return self.new(time_low, time_mid, time_hi_and_version,
|
@@ -178,19 +178,52 @@ module UUIDTools
|
|
178
178
|
raise TypeError,
|
179
179
|
"Expected String, got #{raw_string.class.name} instead."
|
180
180
|
end
|
181
|
-
integer = self.convert_byte_string_to_int(raw_string)
|
182
181
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
182
|
+
if raw_string.respond_to?(:force_encoding)
|
183
|
+
raw_string.force_encoding(Encoding::ASCII_8BIT)
|
184
|
+
end
|
185
|
+
|
186
|
+
raw_length = raw_string.length
|
187
|
+
if raw_length < 16
|
188
|
+
# Option A: Enforce raw_string be 16 characters (More strict)
|
189
|
+
#raise ArgumentError,
|
190
|
+
# "Expected 16 bytes, got #{raw_string.length} instead."
|
191
|
+
|
192
|
+
# Option B: Pad raw_string to 16 characters (Compatible with existing behavior)
|
193
|
+
raw_string = raw_string.rjust(16, "\0")
|
194
|
+
elsif raw_length > 16
|
195
|
+
# NOTE: As per "Option B" above, existing behavior would use the lower
|
196
|
+
# 128-bits of an overly long raw_string instead of using the upper 128-bits.
|
197
|
+
start_index = raw_length - 16
|
198
|
+
raw_string = raw_string[start_index...raw_length]
|
199
|
+
end
|
200
|
+
|
201
|
+
raw_bytes = []
|
202
|
+
if raw_string[0].respond_to? :ord
|
203
|
+
for i in 0...raw_string.size
|
204
|
+
raw_bytes << raw_string[i].ord
|
205
|
+
end
|
206
|
+
else
|
207
|
+
raw_bytes = raw_string
|
208
|
+
end
|
209
|
+
|
210
|
+
time_low = ((raw_bytes[0] << 24) +
|
211
|
+
(raw_bytes[1] << 16) +
|
212
|
+
(raw_bytes[2] << 8) +
|
213
|
+
raw_bytes[3])
|
214
|
+
time_mid = ((raw_bytes[4] << 8) +
|
215
|
+
raw_bytes[5])
|
216
|
+
time_hi_and_version = ((raw_bytes[6] << 8) +
|
217
|
+
raw_bytes[7])
|
218
|
+
clock_seq_hi_and_reserved = raw_bytes[8]
|
219
|
+
clock_seq_low = raw_bytes[9]
|
188
220
|
nodes = []
|
189
|
-
for i in
|
190
|
-
nodes <<
|
221
|
+
for i in 10...16
|
222
|
+
nodes << raw_bytes[i]
|
191
223
|
end
|
224
|
+
|
192
225
|
return self.new(time_low, time_mid, time_hi_and_version,
|
193
|
-
|
226
|
+
clock_seq_hi_and_reserved, clock_seq_low, nodes)
|
194
227
|
end
|
195
228
|
|
196
229
|
##
|
@@ -200,17 +233,42 @@ module UUIDTools
|
|
200
233
|
raise ArgumentError,
|
201
234
|
"Expected Integer, got #{uuid_int.class.name} instead."
|
202
235
|
end
|
203
|
-
|
236
|
+
|
237
|
+
time_low = (uuid_int >> 96) & 0xFFFFFFFF
|
238
|
+
time_mid = (uuid_int >> 80) & 0xFFFF
|
239
|
+
time_hi_and_version = (uuid_int >> 64) & 0xFFFF
|
240
|
+
clock_seq_hi_and_reserved = (uuid_int >> 56) & 0xFF
|
241
|
+
clock_seq_low = (uuid_int >> 48) & 0xFF
|
242
|
+
nodes = []
|
243
|
+
for i in 0..5
|
244
|
+
nodes << ((uuid_int >> (40 - (i * 8))) & 0xFF)
|
245
|
+
end
|
246
|
+
|
247
|
+
return self.new(time_low, time_mid, time_hi_and_version,
|
248
|
+
clock_seq_hi_and_reserved, clock_seq_low, nodes)
|
204
249
|
end
|
205
250
|
|
206
251
|
##
|
207
252
|
# Parse a UUID from a hexdigest String.
|
208
|
-
def self.parse_hexdigest(
|
209
|
-
unless
|
253
|
+
def self.parse_hexdigest(uuid_hex)
|
254
|
+
unless uuid_hex.kind_of?(String)
|
210
255
|
raise ArgumentError,
|
211
|
-
"Expected String, got #{
|
256
|
+
"Expected String, got #{uuid_hex.class.name} instead."
|
257
|
+
end
|
258
|
+
|
259
|
+
time_low = uuid_hex[0...8].to_i(16)
|
260
|
+
time_mid = uuid_hex[8...12].to_i(16)
|
261
|
+
time_hi_and_version = uuid_hex[12...16].to_i(16)
|
262
|
+
clock_seq_hi_and_reserved = uuid_hex[16...18].to_i(16)
|
263
|
+
clock_seq_low = uuid_hex[18...20].to_i(16)
|
264
|
+
nodes_string = uuid_hex[20...32]
|
265
|
+
nodes = []
|
266
|
+
for i in 0..5
|
267
|
+
nodes << nodes_string[(i * 2)..(i * 2) + 1].to_i(16)
|
212
268
|
end
|
213
|
-
|
269
|
+
|
270
|
+
return self.new(time_low, time_mid, time_hi_and_version,
|
271
|
+
clock_seq_hi_and_reserved, clock_seq_low, nodes)
|
214
272
|
end
|
215
273
|
|
216
274
|
##
|
@@ -249,7 +307,7 @@ module UUIDTools
|
|
249
307
|
nodes = SecureRandom.random_bytes(6).unpack("C*")
|
250
308
|
nodes[0] |= 0b00000001
|
251
309
|
end
|
252
|
-
|
310
|
+
6.times do |i|
|
253
311
|
node_id += (nodes[i] << (40 - (i * 8)))
|
254
312
|
end
|
255
313
|
clock_sequence = @@last_clock_sequence
|
@@ -405,7 +463,7 @@ module UUIDTools
|
|
405
463
|
return check if check != 0
|
406
464
|
check = self.clock_seq_low <=> other_uuid.clock_seq_low
|
407
465
|
return check if check != 0
|
408
|
-
|
466
|
+
6.times do |i|
|
409
467
|
if (self.nodes[i] < other_uuid.nodes[i])
|
410
468
|
return -1
|
411
469
|
end
|
@@ -486,7 +544,7 @@ module UUIDTools
|
|
486
544
|
bytes = (time_low << 96) + (time_mid << 80) +
|
487
545
|
(time_hi_and_version << 64) + (clock_seq_hi_and_reserved << 56) +
|
488
546
|
(clock_seq_low << 48)
|
489
|
-
|
547
|
+
6.times do |i|
|
490
548
|
bytes += (nodes[i] << (40 - (i * 8)))
|
491
549
|
end
|
492
550
|
bytes
|
@@ -500,7 +558,7 @@ module UUIDTools
|
|
500
558
|
def generate_s
|
501
559
|
result = sprintf("%8.8x-%4.4x-%4.4x-%2.2x%2.2x-", @time_low, @time_mid,
|
502
560
|
@time_hi_and_version, @clock_seq_hi_and_reserved, @clock_seq_low);
|
503
|
-
|
561
|
+
6.times do |i|
|
504
562
|
result << sprintf("%2.2x", @nodes[i])
|
505
563
|
end
|
506
564
|
return result.downcase
|
@@ -699,7 +757,7 @@ module UUIDTools
|
|
699
757
|
if byte_string.respond_to?(:force_encoding)
|
700
758
|
byte_string.force_encoding(Encoding::ASCII_8BIT)
|
701
759
|
end
|
702
|
-
|
760
|
+
size.times do |i|
|
703
761
|
byte_string << ((integer >> (((size - 1) - i) * 8)) & 0xFF)
|
704
762
|
end
|
705
763
|
return byte_string
|
@@ -711,13 +769,19 @@ module UUIDTools
|
|
711
769
|
if byte_string.respond_to?(:force_encoding)
|
712
770
|
byte_string.force_encoding(Encoding::ASCII_8BIT)
|
713
771
|
end
|
772
|
+
|
714
773
|
integer = 0
|
715
774
|
size = byte_string.size
|
716
|
-
|
717
|
-
|
718
|
-
byte_string[i].ord
|
719
|
-
|
775
|
+
if byte_string[0].respond_to? :ord
|
776
|
+
for i in 0...size
|
777
|
+
integer += (byte_string[i].ord << (((size - 1) - i) * 8))
|
778
|
+
end
|
779
|
+
else
|
780
|
+
for i in 0...size
|
781
|
+
integer += (byte_string[i] << (((size - 1) - i) * 8))
|
782
|
+
end
|
720
783
|
end
|
784
|
+
|
721
785
|
return integer
|
722
786
|
end
|
723
787
|
end
|
data/lib/uuidtools/version.rb
CHANGED
@@ -94,7 +94,7 @@ describe UUIDTools::UUID, "when parsing" do
|
|
94
94
|
it "should produce a sane hash value for a UUID" do
|
95
95
|
uuid = UUIDTools::UUID.new(0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0])
|
96
96
|
expect(uuid.to_i).to eql(0)
|
97
|
-
expect(uuid.hash).to be_kind_of(
|
97
|
+
expect(uuid.hash).to be_kind_of(Integer)
|
98
98
|
end
|
99
99
|
|
100
100
|
it "should produce the correct URI for a UUID" do
|
@@ -125,4 +125,23 @@ describe UUIDTools::UUID, "when parsing" do
|
|
125
125
|
uuid = UUIDTools::UUID.timestamp_create
|
126
126
|
expect(UUIDTools::UUID.parse_hexdigest(uuid.hexdigest)).to eql(uuid)
|
127
127
|
end
|
128
|
+
|
129
|
+
it "should correctly parse raw bytes" do
|
130
|
+
# NOTE: Short Input
|
131
|
+
expect(UUIDTools::UUID.new(0, 0, 0, 0, 0, [0, 0, 0, 0, 0, 0])).to eql(
|
132
|
+
UUIDTools::UUID.parse_raw(""))
|
133
|
+
|
134
|
+
# NOTE: Nil Input
|
135
|
+
expect(UUIDTools::UUID.parse_raw(
|
136
|
+
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
137
|
+
)).to be_nil_uuid
|
138
|
+
|
139
|
+
# NOTE: Realistic Input
|
140
|
+
uuid = UUIDTools::UUID.timestamp_create
|
141
|
+
expect(UUIDTools::UUID.parse_raw(uuid.raw)).to eql(uuid)
|
142
|
+
|
143
|
+
# NOTE: Long input
|
144
|
+
raw192bit = "\1\2\3\4\5\6\7\8" + uuid.raw
|
145
|
+
expect(UUIDTools::UUID.parse_raw(raw192bit)).to eql(uuid)
|
146
|
+
end
|
128
147
|
end
|
data/tasks/benchmark.rake
CHANGED
@@ -1,38 +1,57 @@
|
|
1
1
|
task :benchmark do
|
2
|
-
require 'lib/uuidtools'
|
3
2
|
require 'benchmark'
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
10000.times do
|
8
|
-
UUID.timestamp_create.to_s
|
9
|
-
end
|
10
|
-
end
|
11
|
-
puts "#{(10000.0 / result.real)} version 1 per second."
|
4
|
+
$LOAD_PATH.unshift File.expand_path('../..', __FILE__)
|
5
|
+
require 'lib/uuidtools'
|
12
6
|
|
13
|
-
|
14
|
-
|
15
|
-
10000.times do
|
16
|
-
UUID.md5_create(UUID_URL_NAMESPACE,
|
17
|
-
"http://www.ietf.org/rfc/rfc4122.txt").to_s
|
18
|
-
end
|
7
|
+
def format_float(float)
|
8
|
+
("%.2f" % float).rjust(9, ' ')
|
19
9
|
end
|
20
|
-
puts "#{(10000.0 / result.real)} version 3 per second."
|
21
10
|
|
22
|
-
|
23
|
-
|
24
|
-
10000.times do
|
25
|
-
UUID.random_create.to_s
|
26
|
-
end
|
11
|
+
def format_result(result, action, iterations)
|
12
|
+
$stdout.puts "#{format_float(iterations / result.real)} | #{action}"
|
27
13
|
end
|
28
|
-
puts "#{(10000.0 / result.real)} version 4 per second."
|
29
14
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
UUID.sha1_create(UUID_URL_NAMESPACE,
|
34
|
-
"http://www.ietf.org/rfc/rfc4122.txt").to_s
|
15
|
+
def benchmark(name, n = 10000)
|
16
|
+
result = Benchmark.measure do
|
17
|
+
n.times { yield }
|
35
18
|
end
|
19
|
+
|
20
|
+
format_result(result, name, n)
|
36
21
|
end
|
37
|
-
|
22
|
+
|
23
|
+
$stdout.puts ' x/second | Benchmark'
|
24
|
+
$stdout.puts '---------- -----------'
|
25
|
+
|
26
|
+
##
|
27
|
+
# Benchmark UUID creation
|
28
|
+
namespace = UUIDTools::UUID_URL_NAMESPACE
|
29
|
+
url = "http://www.ietf.org/rfc/rfc4122.txt"
|
30
|
+
|
31
|
+
benchmark('Version 1') { UUIDTools::UUID.timestamp_create.to_s }
|
32
|
+
benchmark('Version 3') { UUIDTools::UUID.md5_create(namespace, url).to_s }
|
33
|
+
benchmark('Version 4') { UUIDTools::UUID.random_create.to_s }
|
34
|
+
benchmark('Version 5') { UUIDTools::UUID.sha1_create(namespace, url).to_s }
|
35
|
+
|
36
|
+
##
|
37
|
+
# Benchmark UUID parsing
|
38
|
+
uuid_s = UUIDTools::UUID.random_create.to_s
|
39
|
+
benchmark('UUID::parse', 40000) { UUIDTools::UUID.parse(uuid_s) }
|
40
|
+
|
41
|
+
uuid_raw = UUIDTools::UUID.random_create.raw
|
42
|
+
benchmark('UUID::parse_raw', 40000) { UUIDTools::UUID.parse_raw(uuid_raw) }
|
43
|
+
|
44
|
+
uuid_i = UUIDTools::UUID.random_create.to_i
|
45
|
+
benchmark('UUID::parse_int', 40000) { UUIDTools::UUID.parse_int(uuid_i) }
|
46
|
+
|
47
|
+
uuid_hex = UUIDTools::UUID.random_create.hexdigest
|
48
|
+
benchmark('UUID::parse_hexdigest', 40000) { UUIDTools::UUID.parse_hexdigest(uuid_hex) }
|
49
|
+
|
50
|
+
##
|
51
|
+
# Benchmark UUID private api
|
52
|
+
byte_string = UUIDTools::UUID.timestamp_create.raw
|
53
|
+
benchmark('UUID::convert_byte_string_to_int') { UUIDTools::UUID.convert_byte_string_to_int(byte_string) }
|
54
|
+
|
55
|
+
bigint = UUIDTools::UUID.timestamp_create.to_i
|
56
|
+
benchmark('UUID::convert_int_to_byte_string') { UUIDTools::UUID.convert_int_to_byte_string(bigint, 16) }
|
38
57
|
end
|
data/tasks/gem.rake
CHANGED
@@ -10,6 +10,7 @@ namespace :gem do
|
|
10
10
|
s.version = PKG_VERSION
|
11
11
|
s.summary = PKG_SUMMARY
|
12
12
|
s.description = PKG_DESCRIPTION
|
13
|
+
s.licenses = ["Apache-2.0"]
|
13
14
|
|
14
15
|
s.files = PKG_FILES.to_a
|
15
16
|
|
@@ -43,14 +44,8 @@ namespace :gem do
|
|
43
44
|
task :gemspec do
|
44
45
|
spec_string = GEM_SPEC.to_ruby
|
45
46
|
|
46
|
-
|
47
|
-
|
48
|
-
rescue
|
49
|
-
abort "unsafe gemspec: #{$!}"
|
50
|
-
else
|
51
|
-
File.open("#{GEM_SPEC.name}.gemspec", 'w') do |file|
|
52
|
-
file.write spec_string
|
53
|
-
end
|
47
|
+
File.open("#{GEM_SPEC.name}.gemspec", "w") do |file|
|
48
|
+
file.write spec_string
|
54
49
|
end
|
55
50
|
end
|
56
51
|
|
data/uuidtools.gemspec
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: uuidtools 2.2.0 ruby lib
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "uuidtools".freeze
|
6
|
+
s.version = "2.2.0"
|
7
|
+
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
|
+
s.require_paths = ["lib".freeze]
|
10
|
+
s.authors = ["Bob Aman".freeze]
|
11
|
+
s.date = "2020-07-09"
|
12
|
+
s.description = "A simple universally unique ID generation library.\n".freeze
|
13
|
+
s.email = "bob@sporkmonger.com".freeze
|
14
|
+
s.extra_rdoc_files = ["README.md".freeze]
|
15
|
+
s.files = ["CHANGELOG".freeze, "LICENSE.txt".freeze, "README.md".freeze, "Rakefile".freeze, "doc".freeze, "documentation".freeze, "lib".freeze, "lib/compat".freeze, "lib/compat/securerandom.rb".freeze, "lib/uuidtools".freeze, "lib/uuidtools.rb".freeze, "lib/uuidtools/version.rb".freeze, "pkg".freeze, "spec".freeze, "spec/spec.opts".freeze, "spec/spec_helper.rb".freeze, "spec/uuidtools".freeze, "spec/uuidtools/mac_address_spec.rb".freeze, "spec/uuidtools/utility_spec.rb".freeze, "spec/uuidtools/uuid_creation_spec.rb".freeze, "spec/uuidtools/uuid_parsing_spec.rb".freeze, "tasks".freeze, "tasks/benchmark.rake".freeze, "tasks/gem.rake".freeze, "tasks/git.rake".freeze, "tasks/metrics.rake".freeze, "tasks/rspec.rake".freeze, "tasks/yard.rake".freeze, "uuidtools.gemspec".freeze, "website".freeze, "website/index.html".freeze]
|
16
|
+
s.homepage = "https://github.com/sporkmonger/uuidtools".freeze
|
17
|
+
s.licenses = ["Apache-2.0".freeze]
|
18
|
+
s.rdoc_options = ["--main".freeze, "README.md".freeze]
|
19
|
+
s.rubygems_version = "3.0.8".freeze
|
20
|
+
s.summary = "UUID generator".freeze
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
s.specification_version = 4
|
24
|
+
|
25
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
26
|
+
s.add_development_dependency(%q<rake>.freeze, [">= 0.7.3"])
|
27
|
+
s.add_development_dependency(%q<rspec>.freeze, [">= 2.9.0"])
|
28
|
+
s.add_development_dependency(%q<yard>.freeze, [">= 0.8.2"])
|
29
|
+
s.add_development_dependency(%q<launchy>.freeze, [">= 2.0.0"])
|
30
|
+
else
|
31
|
+
s.add_dependency(%q<rake>.freeze, [">= 0.7.3"])
|
32
|
+
s.add_dependency(%q<rspec>.freeze, [">= 2.9.0"])
|
33
|
+
s.add_dependency(%q<yard>.freeze, [">= 0.8.2"])
|
34
|
+
s.add_dependency(%q<launchy>.freeze, [">= 2.0.0"])
|
35
|
+
end
|
36
|
+
else
|
37
|
+
s.add_dependency(%q<rake>.freeze, [">= 0.7.3"])
|
38
|
+
s.add_dependency(%q<rspec>.freeze, [">= 2.9.0"])
|
39
|
+
s.add_dependency(%q<yard>.freeze, [">= 0.8.2"])
|
40
|
+
s.add_dependency(%q<launchy>.freeze, [">= 2.0.0"])
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uuidtools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bob Aman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -66,8 +66,9 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 2.0.0
|
69
|
-
description:
|
70
|
-
|
69
|
+
description: 'A simple universally unique ID generation library.
|
70
|
+
|
71
|
+
'
|
71
72
|
email: bob@sporkmonger.com
|
72
73
|
executables: []
|
73
74
|
extensions: []
|
@@ -93,9 +94,11 @@ files:
|
|
93
94
|
- tasks/metrics.rake
|
94
95
|
- tasks/rspec.rake
|
95
96
|
- tasks/yard.rake
|
97
|
+
- uuidtools.gemspec
|
96
98
|
- website/index.html
|
97
99
|
homepage: https://github.com/sporkmonger/uuidtools
|
98
|
-
licenses:
|
100
|
+
licenses:
|
101
|
+
- Apache-2.0
|
99
102
|
metadata: {}
|
100
103
|
post_install_message:
|
101
104
|
rdoc_options:
|
@@ -114,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
117
|
- !ruby/object:Gem::Version
|
115
118
|
version: '0'
|
116
119
|
requirements: []
|
117
|
-
|
118
|
-
rubygems_version: 2.2.2
|
120
|
+
rubygems_version: 3.0.8
|
119
121
|
signing_key:
|
120
122
|
specification_version: 4
|
121
123
|
summary: UUID generator
|