sixarm_ruby_zid 5.0.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
+ SHA256:
3
+ metadata.gz: a2a9308aa73217e6302ad466d756baca1e80e123aa182452b7d704ce37bdfe07
4
+ data.tar.gz: 3baed1941ef37f4de37990eea1f0756c72f559603dd8b39f6bb0f7336900b88a
5
+ SHA512:
6
+ metadata.gz: 2d7c724f9b5d6ace9e44e2a36d2b6dd0535be31582299bc2ba97a72ef7eda246677b29678be7526905a229c4b3ff4e620c4264e0b7d4ed23d4d1f2248314d6d8
7
+ data.tar.gz: 68b1547592adef639511528adccb4cebd73fe9f5989565aa0d322c3d382267943aea571013db6a6f2af3f32ef33f51f2be93aed47e5a0e6d5b8b1ef660309ba1
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,2 @@
1
+ ^=�V��,cvhsݐ��DEJi$4�e���WA���Ѵ�v�J6�\@e�baV%�!�&v��4@�ԗ��d��t@��
2
+ )r��D�?(p��^j�G*9$b�QPz�*��7��� ldG6�����{��0���5!����VϹ�<x?3�<N�Ж��|AF�%Qk+|���d3f��/%*3y�׶��!��� ��d� 'c�-b�`X��@)�=�U���J��H_�� ͂���bR���7w59
data.tar.gz.sig ADDED
Binary file
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "rake"
3
+ require "rake/testtask"
4
+
5
+ Rake::TestTask.new(:test) do |t|
6
+ t.libs.push("lib", "test")
7
+ t.pattern = "test/**/*.rb"
8
+ end
9
+
10
+ task :default => [:test]
11
+ task :default => [:test]
12
+ task :default => [:test]
@@ -0,0 +1,6 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin rdoc
3
+ Please see README
4
+ =end
5
+
6
+ require_relative "sixarm_ruby_zid/zid"
@@ -0,0 +1,65 @@
1
+ # -*- coding: utf-8 -*-
2
+ =begin rdoc
3
+ ZID class.
4
+ =end
5
+
6
+ require "securerandom"
7
+ require "digest/sha2"
8
+
9
+ class ZID
10
+
11
+ # Generate a new ZID string.
12
+ #
13
+ # Example:
14
+ #
15
+ # string = ZID.generate
16
+ # #=> "4bb88af57d4ddc224fecad688442423d"
17
+ #
18
+ # Return: [String] A new ZID string
19
+ #
20
+ def self.generate
21
+ SecureRandom.hex
22
+ end
23
+
24
+ # Is a given ZID string valid?
25
+ #
26
+ # Example:
27
+ #
28
+ # ZID.valid?("4bb88af57d4ddc224fecad688442423d") #=> true
29
+ # ZID.valid?("hello") #=> false
30
+ #
31
+ # Implemenation note: this method tests the string class,
32
+ # then size, then regex. The test of the string size comes
33
+ # before the regex because the test of the size runs faster,
34
+ # and is an optimization for fast-fail because when the string
35
+ # is not size 32, then the regex doesn't need to be run.
36
+ #
37
+ # Return: [true/false]
38
+ #
39
+ def self.valid?(string)
40
+ !!(string && string.is_a?(String) && string.size == 32 && string =~ /\A[0-9a-f]+\z/)
41
+ end
42
+
43
+ # Parse any object to an ZID string.
44
+ #
45
+ # This does these steps:
46
+ #
47
+ # * Convert the object to a string by calling `#to_s`.
48
+ # * Convert the string to lower case by calling `#downcase`.
49
+ # * Delete any non-hex characters.
50
+ # * Take the first 32 characters.
51
+ #
52
+ # Example:
53
+ #
54
+ # string = ZID.parse("***FFAD30A1-BE5E-B511-9ED8-976CAB0281B6***")
55
+ # #=> "ffad30a1be5eb5119ed8976cab0281b6"
56
+ #
57
+ # Return: [ZID] A new ZID
58
+ #
59
+ def self.parse(object)
60
+ zid = object.to_s.downcase.gsub(/[^0-9a-f]/,'')[0...32]
61
+ raise ArgumentError if !ZID.valid?(zid)
62
+ zid
63
+ end
64
+
65
+ end
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "minitest/autorun"
3
+ require "coveralls"
4
+ require "simplecov"
5
+ Coveralls.wear!
6
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
7
+ SimpleCov::Formatter::HTMLFormatter,
8
+ Coveralls::SimpleCov::Formatter
9
+ ]
10
+ SimpleCov.start
11
+ require "sixarm_ruby_xid"
@@ -0,0 +1,71 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "sixarm_ruby_zid_test"
3
+
4
+ describe ZID do
5
+
6
+ describe "#new" do
7
+
8
+ describe "with initialize defaults" do
9
+
10
+ it "is a string with the correct length and characters" do
11
+ zid = ZID.generate
12
+ zid.must_match /\A[0-9a-f]{32}\z/
13
+ end
14
+
15
+ it "is always different" do
16
+ seen = Set.new
17
+ 99999.times.each{
18
+ zid = ZID.generate
19
+ seen.include?(zid).must_equal false
20
+ seen.add(zid)
21
+ }
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ describe "#valid" do
29
+
30
+ describe "with valid string" do
31
+ it "is true" do
32
+ ZID.valid?("c3d010bbfec046f59c7fe843d32dab32").must_be_same_as true
33
+ end
34
+ end
35
+
36
+ describe "with invalid string" do
37
+ it "is false" do
38
+ ZID.valid?("abc").must_be_same_as false
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ describe ".parse" do
45
+
46
+ it "converts objects to strings" do
47
+ obj = Minitest::Mock.new
48
+ obj.expect(:to_s, "!!C3D010BBFEC046F59C7FE843D32DAB32!!")
49
+ ZID.parse(obj).must_equal "c3d010bbfec046f59c7fe843d32dab32"
50
+ obj.verify
51
+ end
52
+
53
+ it "converts to lower case" do
54
+ ZID.parse("C3D010BBFEC046F59C7FE843D32DAB32").must_equal "c3d010bbfec046f59c7fe843d32dab32"
55
+ end
56
+
57
+ it "deletes non-hex characters" do
58
+ ZID.parse("!!c3d010bb-fec0-46f59c7f-e843d32dab32!!").must_equal "c3d010bbfec046f59c7fe843d32dab32"
59
+ end
60
+
61
+ it "chops at 32 characters" do
62
+ ZID.parse("c3d010bbfec046f59c7fe843d32dab32aaaaaaaaa").must_equal "c3d010bbfec046f59c7fe843d32dab32"
63
+ end
64
+
65
+ it "raises if the string is invalid" do
66
+ proc { ZID.parse("abc") }.must_raise ArgumentError
67
+ end
68
+
69
+ end
70
+
71
+ end
metadata ADDED
@@ -0,0 +1,187 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sixarm_ruby_zid
3
+ version: !ruby/object:Gem::Version
4
+ version: 5.0.1
5
+ platform: ruby
6
+ authors:
7
+ - SixArm
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIFPDCCAyQCCQDx7Y5LWGuPPzANBgkqhkiG9w0BAQsFADBgMQswCQYDVQQGEwJV
14
+ UzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEP
15
+ MA0GA1UECgwGU2l4QXJtMRMwEQYDVQQDDApzaXhhcm0uY29tMB4XDTE4MDExMzIy
16
+ NDYyM1oXDTIwMTAwOTIyNDYyM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNh
17
+ bGlmb3JuaWExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xDzANBgNVBAoMBlNpeEFy
18
+ bTETMBEGA1UEAwwKc2l4YXJtLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
19
+ AgoCggIBAMMPPjYWd77gRmOEkMb+1H9+ckIHlA325OkES2g5Y58hIDzZYTGIxjSP
20
+ 3N7uYx5qR8qZvuO4F1McGJ/NES2robjQcV/aIRXD+5RjbokyYYGJlJujm5c/wZme
21
+ Us7pOzQxc8QcogsdInwQ6O9hTQ4zBdOFZt6YBp5y9ycXVIApBnxJHBU3W6Ir1hl6
22
+ 3v6RYBgHFd3g0dCwuBoaYZE5MU/4q91vc48XhioqXdJlaDyw1ZMyvE+loi+8quVg
23
+ bpUadC/QUZukABYCu6rS6fiRLffmMy/Db7d8b1fP+J1i4bL5atF4xz8c1BDwc2x1
24
+ mXJDUBznMSDpmjAkUwDjh+330tYT/VTioqobCMSLfwgJI2Uqrr8H8N9yeSsOMAup
25
+ nJKnJHXeZPEGAr2LBCcok2KUcdugdYq/0C+ec1bU8BHDDoEOM54rhPKKmCJentO6
26
+ KJRoJfu0ovQj1/BvSksUUWdvhy6jzXviyQq44GKEwsJix6sdNKEpndVDQGOvHPg5
27
+ gcakte7KrpK2Udwy+dK+caHJWXOouHPPFfdZWr5U9DkNjtvvQrwQUsMxECoByKYA
28
+ 7wmX3SwzodtuzAPGzxuwkqwy1RtHAfbrFINFBxP35G/f16x2mtwEpqsdS4LE+c0C
29
+ l3eEQ8xIv3ijKUZek87Uxk7/JH76C3/9tSQeFkt0NkEduHOR1H7RAgMBAAEwDQYJ
30
+ KoZIhvcNAQELBQADggIBALIBNN7zUhFldUaXWGwv6032ZwM2Sm1U8VF8YaH71NLg
31
+ FhlcuJ0JLkGlxT0/68acS0EwoqOEgaHyPx8eodjyDv2MuJlWJGXIgHgLD66Tu0VA
32
+ Wt1sgA823Rl35WVSMqiyoxwsrGFwMtayNrrlpdhB8Ny8CMA2NfKyEJkh4+xlE72a
33
+ D8Eu8NFr9Tt5lHWXdZBI5BhzhQxPPxeIuw0wZ3+kiwxRie7K4XhKsOIrPmu2i6QV
34
+ Yl/663wZgWpqrroSnc3PE3lsuTW7quUvayjtqMTU2qrh7i21oB+/Nn+I6gcxYJZb
35
+ UlK+tvsqoM94U6sFTjw9mDt62MLQGrJtHShS+ZZiGmWj1sKreuwGJnCVDoBk15xa
36
+ oqlvfvLAMBCqlfrHhvGUfbIMgzb9uXNmCjzYMsQxuIgF6IMis6Kq02NBAR91HPMe
37
+ 2RoY7CdBHMxW+O0tgS2xoQbOwb+ti1j4MbsWpCqS9Mteck0Z7jZpRRrUDjXU+/7Z
38
+ RmW9HX0oLIoCBDChCcEKG0Ma4IvHUgjv47f5iYpkXuhifiK4xMG/s+T5Euw3Wg9J
39
+ tzpk/VnZXj7Ek/earx+N/Z+Wtnl2xENm5IF8SFPeI1HFa9NH47pqtxF1YKpNIEVc
40
+ 2xa2BNHSePe7tys/2hbmZuyMu8X5ERmovsabSXB3a+YwtJh5c2jhA21wF7986s0q
41
+ -----END CERTIFICATE-----
42
+ date: 2018-05-11 00:00:00.000000000 Z
43
+ dependencies:
44
+ - !ruby/object:Gem::Dependency
45
+ name: minitest
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 5.7.0
51
+ - - "<"
52
+ - !ruby/object:Gem::Version
53
+ version: '6'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 5.7.0
61
+ - - "<"
62
+ - !ruby/object:Gem::Version
63
+ version: '6'
64
+ - !ruby/object:Gem::Dependency
65
+ name: sixarm_ruby_minitest_extensions
66
+ requirement: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.0.8
71
+ - - "<"
72
+ - !ruby/object:Gem::Version
73
+ version: '2'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 1.0.8
81
+ - - "<"
82
+ - !ruby/object:Gem::Version
83
+ version: '2'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">"
89
+ - !ruby/object:Gem::Version
90
+ version: 10.4.2
91
+ - - "<"
92
+ - !ruby/object:Gem::Version
93
+ version: '11'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">"
99
+ - !ruby/object:Gem::Version
100
+ version: 10.4.2
101
+ - - "<"
102
+ - !ruby/object:Gem::Version
103
+ version: '11'
104
+ - !ruby/object:Gem::Dependency
105
+ name: simplecov
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 0.10.0
111
+ - - "<"
112
+ - !ruby/object:Gem::Version
113
+ version: '2'
114
+ type: :development
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: 0.10.0
121
+ - - "<"
122
+ - !ruby/object:Gem::Version
123
+ version: '2'
124
+ - !ruby/object:Gem::Dependency
125
+ name: coveralls
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 0.8.2
131
+ - - "<"
132
+ - !ruby/object:Gem::Version
133
+ version: '2'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 0.8.2
141
+ - - "<"
142
+ - !ruby/object:Gem::Version
143
+ version: '2'
144
+ description: ZID generates a new random id, suitable for foreign keys, security authentication,
145
+ unique tracking, etc.
146
+ email: sixarm@sixarm.com
147
+ executables: []
148
+ extensions: []
149
+ extra_rdoc_files: []
150
+ files:
151
+ - Rakefile
152
+ - lib/sixarm_ruby_zid.rb
153
+ - lib/sixarm_ruby_zid/zid.rb
154
+ - test/sixarm_ruby_zid_test.rb
155
+ - test/sixarm_ruby_zid_test/zid_test.rb
156
+ homepage: http://sixarm.com/
157
+ licenses:
158
+ - Apache-2.0
159
+ - Artistic-2.0
160
+ - BSD-3-Clause
161
+ - GPL-3.0
162
+ - MIT
163
+ - MPL-2.0
164
+ metadata: {}
165
+ post_install_message:
166
+ rdoc_options: []
167
+ require_paths:
168
+ - lib
169
+ required_ruby_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '2.2'
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ requirements: []
180
+ rubyforge_project:
181
+ rubygems_version: 2.7.6
182
+ signing_key:
183
+ specification_version: 4
184
+ summary: 'SixArm.com → Ruby → ZID: Xeno Identifier'
185
+ test_files:
186
+ - test/sixarm_ruby_zid_test.rb
187
+ - test/sixarm_ruby_zid_test/zid_test.rb
metadata.gz.sig ADDED
Binary file