guid_spanner 0.0.3 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2edae83e0631d50b7b005bf0dfeb73816bfb546d
4
- data.tar.gz: b036197f52f7af4a9162b2b66cb88506f80a2d02
2
+ SHA256:
3
+ metadata.gz: a3024c1bb267b3801f9e68943d3633079e42eba7a1e05577b6c5977982a846f9
4
+ data.tar.gz: 117eacf50adb8fbfca44740b9c5fbc0d57b04a43a5d38dddf3c7927d261c3e4b
5
5
  SHA512:
6
- metadata.gz: e1425612a64bfe0db88f277d7bc03d8ce2b203d00a18047d262c66046538734ccf5132840aa60a86a6e505bc8c4c873115853a3300e301e7e3e0b8abf9cddddf
7
- data.tar.gz: 5882907619f353ea692c071ad4ed5d0b6481c9afec69d71fcccd7baad46e888f325da46b5476e9d1636eb138e34671c29c79da5a13d94cd3622f5c9005f4d5e0
6
+ metadata.gz: 481674a09c2c500fd0595a5a4e276b50838f86913e44e9bcfbe9cfd22f3216b60a19ecdc9df96e4936aaa44cb9f9153bb0be4f41b62beac1b9c466caafd656f1
7
+ data.tar.gz: 46bce9eee27a37eea02d5901cd9eb46cdc44a4f649824734a92ae9838574c571ebd3984a1e123a8fe3e87e4d6d2d772a86edf70317bb5649589d89497912e41a
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'uuidtools'
2
3
 
3
4
  # Module for guid spannering classes
4
5
  module GuidSpanner
@@ -18,15 +19,31 @@ module GuidSpanner
18
19
  guid_str.delete('-')
19
20
  end
20
21
 
22
+ # converts 32-char or 36-char guid to binary-16 (e.g. to store in MySQL binary(16) GUID column)
23
+ #
24
+ # @param guid_str [String] 32 or 36 character GUID/UUID
25
+ # @return [Binary] Binary representation of guid_str
26
+ def self.str_to_bin(guid_str)
27
+ raise GuidSpanner::Exceptions::InvalidUuidFormatError unless valid_32?(guid_str) || valid_36?(guid_str)
28
+ guid = guid_str.length == 36 ? guid_str : unpack_to_36(guid_str)
29
+ UUIDTools::UUID.parse(guid).raw
30
+ end
31
+
32
+ # converts binary-16 guid to 36-char (e.g. to convert guid in MySQL binary(16) GUID column)
33
+ #
34
+ # @param guid_bin [Binary] 16 byte GUID/UUID
35
+ # @return [String] 36 character representation of guid_bin
36
+ def self.bin_to_str(guid_bin)
37
+ UUIDTools::UUID.parse_raw(guid_bin).to_s
38
+ end
39
+
21
40
  class << self
22
41
  def valid_32?(guid_str)
23
- res = guid_str =~ /^([0-9A-Fa-f]{8}[0-9A-Fa-f]{4}[0-9A-Fa-f]{4}[0-9A-Fa-f]{4}[0-9A-Fa-f]{12})$/
24
- res ? true : false
42
+ guid_str =~ /\A\h{32}\z/
25
43
  end
26
44
 
27
45
  def valid_36?(guid_str)
28
- res = guid_str =~ /^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/
29
- res ? true : false
46
+ guid_str =~ /\A\h{8}(-\h{4}){3}-\h{12}\z/
30
47
  end
31
48
  end
32
49
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Module
4
+ module GuidSpanner
5
+ # :nodoc:
6
+ VERSION = '1.0.0'
7
+ end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guid_spanner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nigel Surtees
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-29 00:00:00.000000000 Z
11
+ date: 2018-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: uuidtools
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'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +94,20 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description: A collection of utilities for uuid manipulation
84
112
  email: nigel.surtees@sage.com
85
113
  executables: []
@@ -90,6 +118,7 @@ files:
90
118
  - lib/guid_spanner/exceptions.rb
91
119
  - lib/guid_spanner/exceptions/invalid_uuid_format_error.rb
92
120
  - lib/guid_spanner/guid.rb
121
+ - lib/guid_spanner/version.rb
93
122
  homepage: http://rubygems.org/gems/guid_spanner
94
123
  licenses: []
95
124
  metadata: {}
@@ -109,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
138
  version: '0'
110
139
  requirements: []
111
140
  rubyforge_project:
112
- rubygems_version: 2.6.11
141
+ rubygems_version: 2.7.7
113
142
  signing_key:
114
143
  specification_version: 4
115
144
  summary: Guid Spanner!