guid_spanner 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2edae83e0631d50b7b005bf0dfeb73816bfb546d
4
+ data.tar.gz: b036197f52f7af4a9162b2b66cb88506f80a2d02
5
+ SHA512:
6
+ metadata.gz: e1425612a64bfe0db88f277d7bc03d8ce2b203d00a18047d262c66046538734ccf5132840aa60a86a6e505bc8c4c873115853a3300e301e7e3e0b8abf9cddddf
7
+ data.tar.gz: 5882907619f353ea692c071ad4ed5d0b6481c9afec69d71fcccd7baad46e888f325da46b5476e9d1636eb138e34671c29c79da5a13d94cd3622f5c9005f4d5e0
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal:true
2
+
3
+ # module to handle invalid uuid format Exceptions
4
+ module GuidSpanner
5
+ # Exceptions module
6
+ module Exceptions
7
+ # Error class for when a message is not applicable for the handler
8
+ class InvalidUuidFormatError < StandardError
9
+ def initialize(message = 'Invalid UUID format, must be 32 or 36 characters in length.')
10
+ super(message)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'exceptions/invalid_uuid_format_error'
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Module for guid spannering classes
4
+ module GuidSpanner
5
+ # Class to convert from 32 character guids to 36 character guids and back
6
+ class Guid
7
+ # class method to convert 32-char guid to 36-char version
8
+ def self.unpack_to_36(guid_str)
9
+ raise GuidSpanner::Exceptions::InvalidUuidFormatError unless valid_32?(guid_str) || valid_36?(guid_str)
10
+ return guid_str if guid_str.length == 36
11
+ guid_str.unpack('A8A4A4A4A12').join('-')
12
+ end
13
+
14
+ # class method to convert 36-char guid to 32-char version
15
+ def self.pack_to_32(guid_str)
16
+ return guid_str if valid_32?(guid_str)
17
+ raise GuidSpanner::Exceptions::InvalidUuidFormatError unless valid_36?(guid_str)
18
+ guid_str.delete('-')
19
+ end
20
+
21
+ class << self
22
+ 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
25
+ end
26
+
27
+ 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
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'guid_spanner/exceptions'
4
+ require_relative 'guid_spanner/guid'
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: guid_spanner
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Nigel Surtees
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-08-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: A collection of utilities for uuid manipulation
84
+ email: nigel.surtees@sage.com
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - lib/guid_spanner.rb
90
+ - lib/guid_spanner/exceptions.rb
91
+ - lib/guid_spanner/exceptions/invalid_uuid_format_error.rb
92
+ - lib/guid_spanner/guid.rb
93
+ homepage: http://rubygems.org/gems/guid_spanner
94
+ licenses: []
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.6.11
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: Guid Spanner!
116
+ test_files: []