torid 1.0.0 → 1.1.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
2
  SHA1:
3
- metadata.gz: e6dacf1ffa7be13c30286d37766f06b04cfef520
4
- data.tar.gz: eb17f8af92781af966f8575148346990b0c055a5
3
+ metadata.gz: f00dde7601ef49bef1988ca71448d7e177adeca8
4
+ data.tar.gz: 46b76fc71876f3e580d99e480c925bfb5ff1b9aa
5
5
  SHA512:
6
- metadata.gz: ab397dcae732b089f5f5eba45c17dd1362fb4928a48fa30b9275c226e91cacd37f6c6248dd6dc26cc1d6ebe56b188f4d6e313670312a8f6811cea60f6c7b5f7e
7
- data.tar.gz: 0265870e23051dfce0d1953c336447bd82e45129d34ca3156fcc4f4f701d329faad1e0f0b03612b4188189481734ba625f94ac2895f8dae54a1276fcff9048e2
6
+ metadata.gz: 4869b5ba0b7f952ad70b80d6b6113b12f96294ecaa309224c32b00d85afb13d215748407924c8d7da4f99c1b7da57b138a57fbe867df7b50ea07fc8e119e1315
7
+ data.tar.gz: 775f96e810c9e85fa4e7a17ecfc1f58926315f458d085ed01a8a8a5e008e25a25fc77419196aa94c70b7fb113e4303bce681447f731d1d6571b83a4a8c898fb7
data/HISTORY.md CHANGED
@@ -1,4 +1,8 @@
1
1
  # Torid Changelog
2
+ ## Version 1.1.0 - 2014-07-17
3
+
4
+ * Added Torid::UUID.match
5
+
2
6
  ## Version 1.0.0
3
7
 
4
8
  * Initial Release - Yeah!
@@ -2,7 +2,7 @@
2
2
  # that sort lexically in time order.
3
3
  module Torid
4
4
  # Public: The Version of the Torid library as a String
5
- VERSION = "1.0.0"
5
+ VERSION = "1.1.0"
6
6
 
7
7
  # Public: return the next Torid::UUID from the default Generator
8
8
  #
@@ -21,11 +21,28 @@ module Torid
21
21
  # uuid.node_id # => Integer
22
22
  class UUID
23
23
 
24
- # Public: Create a Torid::UUID from an existing String.
24
+ # Regular expression that matches the 36 byte 8-4-4-4-12 format
25
+ REGEX = %r{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}}i
26
+
27
+ # Public: Return if the given string matches the UUID regular expression
28
+ #
29
+ # str - The String to compare to REGEX
25
30
  #
31
+ # Examples:
32
+ #
33
+ # Torid::UUID.match( "0004fda3-8c73-5e0f-bae4-e9c86e3684a5" ) # => MatchData
34
+ #
35
+ # Returns MatchData or nil if there is no match
36
+ def self.match( str )
37
+ REGEX.match( str )
38
+ end
39
+
40
+ # Public: Create a Torid::UUID from an existing String.
26
41
  # The String can either be a 16 byte binary string, or a 36byte hexadecimal
27
42
  # UUID in the 8-4-4-4-12 format.
28
43
  #
44
+ # str - The String from which to create the UUID.
45
+ #
29
46
  # Examples
30
47
  #
31
48
  # Torid::UUID.from( "0004fda3-8c73-5e0f-bae4-e9c86e3684a5" ) # => Torid::UUID
@@ -34,18 +51,15 @@ module Torid
34
51
  # Returns a Torid::UUID
35
52
  # Raises ArgumentError if the String is not convertable to a UUID.
36
53
  def self.from( str )
37
- case str.bytesize
38
- when 36
39
- from_string( str )
40
- when 16
41
- from_bytes( str )
42
- else
43
- raise ArgumentError, "UUID can only be loaded from a 16 byte binary string or a 36 byte formatted UUID string."
44
- end
54
+ return from_bytes( str ) if str.bytesize == 16
55
+ return from_string( str ) if UUID.match( str )
56
+ raise ArgumentError, "UUID can only be loaded from a 16 byte binary string or a 36 byte formatted UUID string."
45
57
  end
46
58
 
47
59
  # Internal: Create a new UUID from an existing string in the 8-4-4-4-12 format
48
60
  #
61
+ # str - The String from which to create the UUID.
62
+ #
49
63
  # Copied from lexical_uuid
50
64
  #
51
65
  # Returns a Torid::UUID
@@ -57,6 +71,8 @@ module Torid
57
71
 
58
72
  # Internal: Create a new UUID from an existing 16 byte String
59
73
  #
74
+ # str - The String from which to create the UUID.
75
+ #
60
76
  # Copied from lexical_uuid
61
77
  #
62
78
  # Returns a Torid::UUID
@@ -25,7 +25,11 @@ class ThisProject
25
25
  #
26
26
  # Yields self
27
27
  def initialize(&block)
28
- @exclude_from_manifest = %r/\.(git|DS_Store)|^(doc|coverage|pkg|tmp|Gemfile(\.lock)?)|^[^\/]+\.gemspec|\.(swp|jar|bundle|so|rvmrc)$|~$/
28
+ @exclude_from_manifest = Regexp.union(/\.(git|DS_Store)/,
29
+ /^(doc|coverage|pkg|tmp|Gemfile(\.lock)?)/,
30
+ /^[^\/]+\.gemspec/,
31
+ /\.(swp|jar|bundle|so|rvmrc|travis.yml)$/,
32
+ /~$/)
29
33
  @gemspecs = Hash.new
30
34
  yield self if block_given?
31
35
  end
@@ -177,7 +181,7 @@ class ThisProject
177
181
  if RUBY_VERSION < "1.9.0"
178
182
  platform_gemspec.add_development_dependency( 'rcov', '~> 1.0.0' )
179
183
  else
180
- platform_gemspec.add_development_dependency( 'simplecov', '~> 0.8.2' )
184
+ platform_gemspec.add_development_dependency( 'simplecov', '~> 0.9' )
181
185
  end
182
186
  end
183
187
 
@@ -12,6 +12,23 @@ module Torid
12
12
  @guid = "0004fd7d-f50d-e22e-0000-00000000002a"
13
13
  end
14
14
 
15
+ def test_uuid_regex_matches
16
+ assert_match( Torid::UUID::REGEX, @guid )
17
+ end
18
+
19
+ def test_uuid_match
20
+ assert( Torid::UUID::REGEX.match( @guid ) )
21
+ end
22
+
23
+ def test_uuid_no_match
24
+ assert_equal( nil, Torid::UUID::REGEX.match( "foo" ))
25
+ end
26
+
27
+ def test_uuid_match_case_insensitive
28
+ match_data = Torid::UUID::REGEX.match( @guid.upcase )
29
+ assert_instance_of( MatchData, match_data )
30
+ end
31
+
15
32
  def test_round_trips_bytes
16
33
  uuid = ::Torid::UUID.from( @bytes)
17
34
  assert_equal( @bytes, uuid.bytes )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: torid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Hinegardner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-08 00:00:00.000000000 Z
11
+ date: 2014-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fnv