noid 0.7.0 → 0.7.1
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 +13 -5
- data/VERSION +1 -1
- data/lib/noid/minter.rb +11 -6
- data/spec/lib/minter_spec.rb +25 -2
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MDE0ZDYxMWVjODZhOGEwODM0NDRiZThjZmZhMWU3YTVjZjZjYTEwNw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZWY4NGM2YjcwMGViNmQxMTk1MmU1OTYzNGFiMDQ1ODk1YTI1ZjE3Mw==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MmIxY2RiNWUzNjFmZmE1MmY4YjE1YjgxZTFkZTIwMDZhNWYwZTI1ZWM5NWE5
|
10
|
+
MDcyZDFhMmE5ZWQxZDVhOWIwYzRmNjdjOGViZjA4NDQ4ZjcwOTViOWU3ZDcz
|
11
|
+
NDE5ZjhhNWIwMDk3Y2IzZGUzZDI1Zjk5ZDE3NzBlYTE1MDVjNGE=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MDdlODMyZDMxYWExNzM5MTY4ZGY5ZjkzNzJhMDc0MDUwODg0OTA2OGEwNDJh
|
14
|
+
MzRmNDdjNTk0NWE4NzkzZTYwMDJlNTBmZGY0MjgwZmMwZWNlNjgwMWMzZTYw
|
15
|
+
NjYyNWM3OGMxYzMxNTVmOGZkNTU1Y2RkMDQ5MTc2Y2I4YzczY2M=
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.7.
|
1
|
+
0.7.1
|
data/lib/noid/minter.rb
CHANGED
@@ -72,7 +72,7 @@ module Noid
|
|
72
72
|
@seed = @rand.seed
|
73
73
|
@seq = seq || 0
|
74
74
|
|
75
|
-
seq.times {
|
75
|
+
seq.times { next_random } if seq
|
76
76
|
|
77
77
|
@rand
|
78
78
|
end
|
@@ -82,15 +82,20 @@ module Noid
|
|
82
82
|
@seq += 1
|
83
83
|
case template.generator
|
84
84
|
when 'r'
|
85
|
-
|
86
|
-
i = @rand.rand(counters.size)
|
87
|
-
n = counters[i][:value]
|
88
|
-
counters[i][:value] += 1
|
89
|
-
counters.delete_at(i) if counters[i][:value] == counters[i][:max]
|
85
|
+
n = next_random
|
90
86
|
end
|
91
87
|
n
|
92
88
|
end
|
93
89
|
|
90
|
+
def next_random
|
91
|
+
raise Exception("Exhausted noid sequence pool") if counters.size == 0
|
92
|
+
i = @rand.rand(counters.size)
|
93
|
+
n = counters[i][:value]
|
94
|
+
counters[i][:value] += 1
|
95
|
+
counters.delete_at(i) if counters[i][:value] == counters[i][:max]
|
96
|
+
n
|
97
|
+
end
|
98
|
+
|
94
99
|
##
|
95
100
|
# Counters to use for quasi-random NOID sequences
|
96
101
|
def counters
|
data/spec/lib/minter_spec.rb
CHANGED
@@ -128,11 +128,16 @@ describe Noid::Minter do
|
|
128
128
|
it "given a specific seed and sequence, identifiers should be replicable" do
|
129
129
|
minter = Noid::Minter.new(:template => "63q.redek")
|
130
130
|
minter.seed(23456789, 567)
|
131
|
-
minter.mint
|
131
|
+
mint1 = minter.mint
|
132
|
+
dump1 = minter.dump
|
132
133
|
|
133
134
|
minter = Noid::Minter.new(:template => "63q.redek")
|
134
135
|
minter.seed(23456789, 567)
|
135
|
-
minter.mint
|
136
|
+
mint2 = minter.mint
|
137
|
+
dump2 = minter.dump
|
138
|
+
expect(dump1).to eql(dump2)
|
139
|
+
expect(mint1).to eql(mint2)
|
140
|
+
mint1.should == "63qb41v" # "63qh305" was the value from a slightly buggy impl
|
136
141
|
end
|
137
142
|
end
|
138
143
|
|
@@ -171,6 +176,24 @@ describe Noid::Minter do
|
|
171
176
|
|
172
177
|
end
|
173
178
|
|
179
|
+
describe "with large seeds" do
|
180
|
+
it "should not reproduce noids with constructed sequences" do
|
181
|
+
minter = Noid::Minter.new(:template => 'ldpd:.reeeeeeee')
|
182
|
+
minter.seed(192548637498850379850405658298152906991)
|
183
|
+
first_values = (1..1000).collect {|c| minter.mint}
|
184
|
+
|
185
|
+
values = []
|
186
|
+
(0..999).each do |i|
|
187
|
+
minter = Noid::Minter.new(:template => 'ldpd:.reeeeeeee')
|
188
|
+
minter.seed(192548637498850379850405658298152906991, i)
|
189
|
+
values << minter.mint
|
190
|
+
expect(values[i]).to eql first_values[i]
|
191
|
+
end
|
192
|
+
values.uniq!
|
193
|
+
expect(values.length).to eql 1000
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
174
197
|
describe "multithreading-safe example" do
|
175
198
|
before do
|
176
199
|
require 'yaml'
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: noid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - '>='
|
17
|
+
- - ! '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - '>='
|
24
|
+
- - ! '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - '>='
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - '>='
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - '>='
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '2.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - '>='
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.0'
|
55
55
|
description: Nice Opaque Identifier
|
@@ -83,18 +83,20 @@ require_paths:
|
|
83
83
|
- lib
|
84
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - '>='
|
86
|
+
- - ! '>='
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: 1.9.3
|
89
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
90
|
requirements:
|
91
|
-
- - '>='
|
91
|
+
- - ! '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
94
|
requirements: []
|
95
95
|
rubyforge_project: noid
|
96
|
-
rubygems_version: 2.
|
96
|
+
rubygems_version: 2.2.2
|
97
97
|
signing_key:
|
98
98
|
specification_version: 4
|
99
99
|
summary: Nice Opaque Identifier
|
100
|
-
test_files:
|
100
|
+
test_files:
|
101
|
+
- spec/lib/minter_spec.rb
|
102
|
+
- spec/spec_helper.rb
|