evt-identifier-uuid 0.1.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0b1ca83ae60073221ffb5812fc7874aea2c64327
4
+ data.tar.gz: fc50d559e2ae57a66d0b95b14c405b20fd43ba06
5
+ SHA512:
6
+ metadata.gz: 987fd166ba8efffac107eab68e1af8eea1f7de346d31210e89d54b8bb408c219d5f2f1bef5ba645cda2a15c0f28b246fb4865a1fec67a40c445ed2fbaef1e137
7
+ data.tar.gz: 4bfa1c662a64fa4d2d8094417ca1abcdb00afdc259b4475600c3e1d915e54a7b3e9a9e30fb7add5daac35d0dcb169660d479caebed11111d02e6e29b990349d1
@@ -0,0 +1,6 @@
1
+ require 'securerandom'
2
+ require 'naught'
3
+
4
+ require 'identifier/uuid/pattern'
5
+ require 'identifier/uuid/uuid'
6
+ require 'identifier/uuid/random'
@@ -0,0 +1,3 @@
1
+ require 'identifier/uuid/controls/random'
2
+ require 'identifier/uuid/controls/incrementing'
3
+ require 'identifier/uuid/controls/invalid'
@@ -0,0 +1,24 @@
1
+ module Identifier
2
+ module UUID
3
+ module Controls
4
+ module Incrementing
5
+ def self.example(i=nil, increment: nil, sample: nil)
6
+ i ||= increment || 1
7
+ sample ||= false
8
+
9
+ first_octet = (i).to_s.rjust(8, '0')
10
+
11
+ fourth_prefixes = ['8', '9', 'a', 'b']
12
+
13
+ if sample
14
+ fourth_prefix = fourth_prefixes.sample
15
+ else
16
+ fourth_prefix = fourth_prefixes[0]
17
+ end
18
+
19
+ "#{first_octet}-0000-4000-#{fourth_prefix}000-000000000000"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,11 @@
1
+ module Identifier
2
+ module UUID
3
+ module Controls
4
+ module Invalid
5
+ def self.example
6
+ "10000000-0000-0000-0000-000000000000"
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Identifier
2
+ module UUID
3
+ module Controls
4
+ module Random
5
+ def self.example
6
+ Identifier::UUID::Random.get
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module Identifier
2
+ module UUID
3
+ module Pattern
4
+ TYPE_4 = %r{
5
+ [a-f0-9]{8} # abcdef01
6
+ - # -
7
+ [a-f0-9]{4} # abcd
8
+ - # -
9
+ 4[a-f0-9]{3} # 4abc
10
+ - # -
11
+ [89ab][a-f0-9]{3} # 8abc
12
+ - # -
13
+ [a-f0-9]{12} # abcdef012345
14
+ }xi
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,49 @@
1
+ module Identifier
2
+ module UUID
3
+ class Random
4
+ def get
5
+ self.class.get
6
+ end
7
+
8
+ def self.get
9
+ UUID.format(raw)
10
+ end
11
+
12
+ def self.raw
13
+ SecureRandom.uuid
14
+ end
15
+
16
+ def self.configure(receiver, attr_name=nil)
17
+ instance = new
18
+
19
+ if attr_name.nil?
20
+ if receiver.respond_to?(:identifier)
21
+ attr_name = :identifier
22
+ else
23
+ attr_name = :uuid
24
+ end
25
+ end
26
+
27
+ receiver.send "#{attr_name}=", instance
28
+
29
+ instance
30
+ end
31
+
32
+ module Substitute
33
+ NullUUID = Naught.build do |config|
34
+ config.mimic UUID::Random
35
+
36
+ def set(val)
37
+ define_singleton_method(:get) do
38
+ val
39
+ end
40
+ end
41
+ end
42
+
43
+ def self.build
44
+ NullUUID.new
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,30 @@
1
+ module Identifier
2
+ module UUID
3
+ def self.format(uuid)
4
+ uuid.to_s
5
+ end
6
+
7
+ def self.random
8
+ Random.get
9
+ end
10
+
11
+ def self.uuid?(text)
12
+ uuid = parse(text)
13
+ uuid == text
14
+ end
15
+
16
+ def self.parse(text)
17
+ uuid = text.match(pattern).to_s
18
+ uuid = nil if uuid == ''
19
+ uuid
20
+ end
21
+
22
+ def self.pattern
23
+ Pattern::TYPE_4
24
+ end
25
+
26
+ def self.zero
27
+ '00000000-0000-0000-0000-000000000000'
28
+ end
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: evt-identifier-uuid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1.1
5
+ platform: ruby
6
+ authors:
7
+ - The Eventide Project
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-12-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: naught
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ntl-test_bench
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: " "
42
+ email: opensource@eventide-project.org
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/identifier/uuid.rb
48
+ - lib/identifier/uuid/controls.rb
49
+ - lib/identifier/uuid/controls/incrementing.rb
50
+ - lib/identifier/uuid/controls/invalid.rb
51
+ - lib/identifier/uuid/controls/random.rb
52
+ - lib/identifier/uuid/pattern.rb
53
+ - lib/identifier/uuid/random.rb
54
+ - lib/identifier/uuid/uuid.rb
55
+ homepage: https://github.com/eventide-project/identifier-uuid
56
+ licenses:
57
+ - MIT
58
+ metadata: {}
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 2.3.3
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ requirements: []
74
+ rubyforge_project:
75
+ rubygems_version: 2.5.2
76
+ signing_key:
77
+ specification_version: 4
78
+ summary: UUID identifier generator with support for dependency configuration for real
79
+ and null object implementations
80
+ test_files: []