uuid-ncname 0.2.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4e77f488ca6429c6b7799b8ae23f673c2d17ae2914abaebfb8411cd4408ce498
4
- data.tar.gz: a744fad35027fd23aa64795baceeae5b940ef711d475a2e726f5c423df05997c
3
+ metadata.gz: d17bfbafda1f25ed22fe1b314af7d9add89e66caa92a5f859fe399b81b4a1c63
4
+ data.tar.gz: 38372398d6460a72212023f6904c2eef6b5785461169f8ff7e1ff4248aa08ea2
5
5
  SHA512:
6
- metadata.gz: 37652d6a314d6629164f0d616bafa99185cb3d044e9908492d91d5d77a87c13308f5ce894b1a3c05bb382ae9a1cb825e90aaf00152690816a1c2e737b7d20066
7
- data.tar.gz: 5740a1c557cbee7efe37ec3af6f3145a83010222cb3f91159fa9500d161c45279e9208d4cb11141197995d7cb9410e2b28dc69e4bcd8d8e30e4c3f1636c2682e
6
+ metadata.gz: c2f4d687ce200545784b6cd57417d182701faa805bb11e963184418284bc134b02e191a099026a63183aad8f089fd9eb140331fcd3915f33a1ea5e596e97836a
7
+ data.tar.gz: dcbd3afa99943709d07892fff109659dc567fbb3c7ab285cd5b9281894cb0477d984fd9ca0de12b778bd4d7125643299ce9ac61047fbd3a22ce35a91bb774722
data/.gitignore CHANGED
@@ -7,6 +7,9 @@ syntax: glob
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
11
+ \#*
12
+ .\#*
10
13
 
11
14
  # rspec failure tracking
12
15
  .rspec_status
@@ -0,0 +1,5 @@
1
+ --protected
2
+ --no-private
3
+ --hide-void-return
4
+ --markup markdown
5
+ --readme README.md
data/README.md CHANGED
@@ -83,11 +83,10 @@ variants.
83
83
 
84
84
  Since I have already released this gem prior to this format change, I
85
85
  have added a `:version` parameter to both `to_ncname` and
86
- `from_ncname`. The version currently defaults to `0`, the old one, but
87
- will issue a warning if not explicitly set. Later I will change the
88
- default to `1`, while keeping the warning, then later still, finally
89
- remove the warning with 1 as the default. This should ensure that any
90
- code written during the transition produces the correct results.
86
+ `from_ncname`. The version, as of 0.2.4, now defaults to `1`, the
87
+ current one, but will still issue a warning if not explicitly
88
+ set. Later I will finally remove the warning. This should ensure that
89
+ any code written during the transition produces the correct results.
91
90
 
92
91
  > Unless you have to support identifiers generated from version 0.1.3
93
92
  > or older, you should be running these methods with `version: 1`.
@@ -3,11 +3,20 @@ require "uuid/ncname/version"
3
3
 
4
4
  require 'base64'
5
5
  require 'base32'
6
+ require 'base58'
6
7
 
7
8
  module UUID::NCName
8
9
 
9
10
  private
10
11
 
12
+ MATCH = /^([A-Pa-p]) # zero-width boundary and version bookend
13
+ ([2-7A-Za-z]{24}|[-0-9A-Z_a-z]{20}| # base32 and 64
14
+ (?:[1-9A-HJ-NP-Za-km-z]{15}_{6}|[1-9A-HJ-NP-Za-km-z]{16}_{5}|
15
+ [1-9A-HJ-NP-Za-km-z]{17}_{4}|[1-9A-HJ-NP-Za-km-z]{18}___|
16
+ [1-9A-HJ-NP-Za-km-z]{19}__|[1-9A-HJ-NP-Za-km-z]{20}_|
17
+ [1-9A-HJ-NP-Za-km-z]{21})) # base58 with underscore pad
18
+ ([-0-9A-Z_a-z])$/x.freeze # lax variant bookend and zero-width boundary
19
+
11
20
  ENCODE = {
12
21
  32 => -> (bin, align = true) {
13
22
  if align
@@ -18,7 +27,15 @@ module UUID::NCName
18
27
 
19
28
  out = ::Base32.encode bin
20
29
 
21
- out.downcase[0, 25]
30
+ out.downcase[0, 25] # clip off the padding
31
+ },
32
+ 58 => -> (bin, _) {
33
+ variant = bin[-1].ord >> 4
34
+ # note the bitcoin alphabet is the one used in draft-msporny-base58
35
+ out = ::Base58.binary_to_base58(bin.chop, :bitcoin)
36
+ # we need to pad base58 with underscores because it is variable length
37
+ out + (?_ * (21 - out.length)) +
38
+ encode_version(variant) # encode_version does variant too
22
39
  },
23
40
  64 => -> (bin, align = true) {
24
41
  if align
@@ -29,10 +46,11 @@ module UUID::NCName
29
46
 
30
47
  out = ::Base64.urlsafe_encode64 bin
31
48
 
32
- out[0, 21]
49
+ out[0, 21] # clip off the padding
33
50
  },
34
51
  }
35
52
 
53
+ # note the version symbol is already removed
36
54
  DECODE = {
37
55
  32 => -> (str, align = true) {
38
56
  str = str.upcase[0, 25] + 'A======'
@@ -41,6 +59,11 @@ module UUID::NCName
41
59
 
42
60
  out.pack 'C*'
43
61
  },
62
+ 58 => -> (str, _) {
63
+ variant = decode_version(str[-1]) << 4
64
+ str = str.chop.tr ?_, ''
65
+ ::Base58.base58_to_binary(str, :bitcoin) + variant.chr
66
+ },
44
67
  64 => -> (str, align = true) {
45
68
  str = str[0, 21] + 'A=='
46
69
  out = ::Base64.urlsafe_decode64(str).unpack 'C*'
@@ -116,8 +139,9 @@ module UUID::NCName
116
139
  ],
117
140
  ]
118
141
 
119
- def self.encode_version version
120
- ((version & 15) + 65).chr
142
+ def self.encode_version version, radix = 64
143
+ offset = radix == 32 ? 97 : 65
144
+ ((version & 15) + offset).chr
121
145
  end
122
146
 
123
147
  def self.decode_version version
@@ -127,7 +151,7 @@ module UUID::NCName
127
151
  def self.warn_version version
128
152
  if version.nil?
129
153
  warn 'Set an explicit :version to remove this warning. See documentation.'
130
- version = 0
154
+ version = 1
131
155
  end
132
156
 
133
157
  raise 'Version must be 0 or 1' unless [0, 1].include? version
@@ -137,6 +161,27 @@ module UUID::NCName
137
161
 
138
162
  public
139
163
 
164
+ # This error gets thrown when a UUID-NCName token can't be
165
+ # positively determined to be one version or the other.
166
+ class AmbiguousToken < ArgumentError
167
+
168
+ # @return [String] The ambiguous token
169
+ attr_reader :token
170
+ # @return [String] The UUID when decoded using version 0
171
+ attr_reader :v0
172
+ # @return [String] The UUID when decoded using version 1
173
+ attr_reader :v1
174
+
175
+ # @param token [#to_s] The token in question
176
+ # @param v0 [#to_s] UUID decoded with decoding scheme version 0
177
+ # @param v1 [#to_s] UUID decoded with decoding scheme version 1
178
+
179
+ def initialize token, v0: nil, v1: nil
180
+ @v0 = v0 || from_ncname(token, version: 0)
181
+ @v1 = v1 || from_ncname(token, version: 1)
182
+ end
183
+ end
184
+
140
185
  # Converts a UUID (or object that when converted to a string looks
141
186
  # like a UUID) to an NCName. By default it produces the Base64
142
187
  # variant.
@@ -149,9 +194,9 @@ module UUID::NCName
149
194
  #
150
195
  # @param version [0, 1] An optional formatting version, where 0 is
151
196
  # the naïve original version and 1 moves the `variant` nybble out
152
- # to the end of the identifier. You will be warned if you do not
153
- # set this parameter explicitly. The default is currently 0, but
154
- # will change in the next version.
197
+ # to the end of the identifier. You will be warned for the time
198
+ # being if you do not set this parameter explicitly. The default
199
+ # version is 1.
155
200
  #
156
201
  # @param align [true, false] Optional directive to treat the
157
202
  # terminating character as aligned to the numerical base of the
@@ -162,15 +207,17 @@ module UUID::NCName
162
207
  # range of the letters A through P in (the RFC 3548/4648
163
208
  # representations of) both Base32 and Base64. When `version` is 1
164
209
  # and the terminating character is aligned, RFC4122-compliant UUIDs
165
- # will always terminate with I, J, K, or L. Defaults to `true`.
210
+ # will always terminate with `I`, `J`, `K`, or `L`. Defaults to
211
+ # `true`.
166
212
  #
167
213
  # @return [String] The NCName-formatted UUID.
168
-
214
+ #
169
215
  def self.to_ncname uuid, radix: 64, version: nil, align: true
170
- raise 'Radix must be either 32 or 64' unless [32, 64].include? radix
216
+ raise 'Radix must be either 32, 58, or 64' unless
217
+ [32, 58, 64].include? radix
171
218
  raise 'UUID must be something stringable' if uuid.nil? or
172
219
  not uuid.respond_to? :to_s
173
- raise 'Align must be true or false' unless [true, false].include? align
220
+ align = !!align # coerce to a boolean
174
221
 
175
222
  # XXX remove this when appropriate
176
223
  version = warn_version(version)
@@ -195,14 +242,14 @@ module UUID::NCName
195
242
  raise 'Binary representation of UUID is shorter than 16 bytes' if
196
243
  bin.length < 16
197
244
 
198
- uuidver, content = TRANSFORM[version][0].call bin[0, 16]
245
+ uuidver, content = TRANSFORM[version].first.call bin[0, 16]
199
246
 
200
- encode_version(uuidver) + ENCODE[radix].call(content, align)
247
+ encode_version(uuidver, radix) + ENCODE[radix].call(content, align)
201
248
  end
202
249
 
203
250
  # Converts an NCName-encoded UUID back to its canonical
204
251
  # representation. Will return nil if the input doesn't match the
205
- # radix (if supplied) or is otherwise malformed. doesn't match
252
+ # radix (if supplied) or is otherwise malformed.
206
253
  #
207
254
  # @param ncname [#to_s] an NCName-encoded UUID, either a
208
255
  # 22-character (Base64) variant, or a 26-character (Base32) variant.
@@ -212,17 +259,20 @@ module UUID::NCName
212
259
  # @param format [:str, :hex, :b64, :bin] An optional formatting
213
260
  # parameter; defaults to `:str`, the canonical string representation.
214
261
  #
215
- # @param version [0, 1] See `to_ncname`. Defaults (for now) to 0.
262
+ # @param version [0, 1] See ::to_ncname. Defaults to 1.
216
263
  #
217
- # @param align [true, false, nil] See `to_ncname` for details.
264
+ # @param align [nil, true, false] See ::to_ncname for details.
218
265
  # Setting this parameter to `nil`, the default, will cause the
219
266
  # decoder to detect the alignment state from the identifier.
220
267
  #
268
+ # @param validate [false, true] Check that the ninth (the variant)
269
+ # octet is correctly masked _after_ decoding.
270
+ #
221
271
  # @return [String, nil] The corresponding UUID or nil if the input
222
272
  # is malformed.
223
-
273
+ #
224
274
  def self.from_ncname ncname,
225
- radix: nil, format: :str, version: nil, align: nil
275
+ radix: nil, format: :str, version: nil, align: nil, validate: false
226
276
  raise 'Format must be symbol-able' unless format.respond_to? :to_sym
227
277
  raise "Invalid format #{format}" unless FORMAT[format]
228
278
  raise 'Align must be true, false, or nil' unless
@@ -234,34 +284,33 @@ module UUID::NCName
234
284
  return unless ncname and ncname.respond_to? :to_s
235
285
 
236
286
  ncname = ncname.to_s.strip.gsub(/\s+/, '')
237
- match = /^([A-Za-z])([0-9A-Za-z_-]{21,})$/.match(ncname) or return
287
+ match = MATCH.match(ncname) or return
288
+ return if align and !/[A-Pa-p]$/.match? ncname # MATCH is lax
238
289
 
290
+ # determine the radix from the input
239
291
  if radix
240
- raise "Radix must be 32 or 64, not #{radix}" unless [32, 64].any? radix
241
- return unless { 32 => 26, 64 => 22 }[radix] == ncname.length
292
+ raise ArgumentError, "Radix must be 32, 58, or 64, not #{radix}" unless
293
+ [32, 58, 64].any? radix
294
+ return unless { 32 => 26, 58 => 23, 64 => 22 }[radix] == ncname.length
242
295
  else
243
- len = ncname.length
244
-
245
- if ncname =~ /[_-]/
246
- radix = 64
247
- elsif len >= 26
248
- radix = 32
249
- elsif len >= 22
250
- radix = 64
251
- else
252
- # uh will this ever get executed now that i put in that return?
253
- raise "Not sure what to do with an identifier of length #{len}."
254
- end
296
+ radix = { 26 => 32, 23 => 58, 22 => 64}[ncname.length] or
297
+ raise ArgumentError,
298
+ "Not sure what to do with an identifier of length #{ncname.length}."
255
299
  end
256
300
 
257
- uuidver, content = match.captures
301
+ # note MATCH separates the variant
302
+ uuidver, *content = match.captures
303
+ content = content.join
258
304
 
259
- align = !!(content =~ /[A-Pa-p]$/) if align.nil?
305
+ align = !!(/[A-Pa-p]$/.match? content) if align.nil?
260
306
  uuidver = decode_version uuidver
261
307
  content = DECODE[radix].call content, align
262
308
 
263
309
  bin = TRANSFORM[version][1].call uuidver, content
264
310
 
311
+ # double-check the variant (high-order bits have to be 10)
312
+ return if validate and bin[8].ord >> 6 != 2
313
+
265
314
  FORMAT[format].call bin
266
315
  end
267
316
 
@@ -269,12 +318,12 @@ module UUID::NCName
269
318
  #
270
319
  # @param uuid [#to_s] The UUID
271
320
  #
272
- # @param version [0, 1] See `to_ncname`.
321
+ # @param version [0, 1] See ::to_ncname.
273
322
  #
274
- # @param align [true, false] See `to_ncname`.
323
+ # @param align [true, false] See ::to_ncname.
275
324
  #
276
325
  # @return [String] The Base64-encoded NCName
277
-
326
+ #
278
327
  def self.to_ncname_64 uuid, version: nil, align: true
279
328
  to_ncname uuid, version: version, align: align
280
329
  end
@@ -285,27 +334,58 @@ module UUID::NCName
285
334
  #
286
335
  # @param format [:str, :hex, :b64, :bin] The format
287
336
  #
288
- # @param version [0, 1] See `to_ncname`.
337
+ # @param version [0, 1] See ::to_ncname.
289
338
  #
290
- # @param align [true, false] See `to_ncname`.
339
+ # @param align [true, false] See ::to_ncname.
291
340
  #
292
341
  # @return [String, nil] The corresponding UUID or nil if the input
293
342
  # is malformed.
294
-
343
+ #
295
344
  def self.from_ncname_64 ncname, format: :str, version: nil, align: nil
296
345
  from_ncname ncname, radix: 64, format: format
297
346
  end
298
347
 
348
+ # Shorthand for conversion to the Base58 version
349
+ #
350
+ # @param uuid [#to_s] The UUID
351
+ #
352
+ # @param version [0, 1] See ::to_ncname.
353
+ #
354
+ # @param align [true, false] See ::to_ncname.
355
+ #
356
+ # @return [String] The Base58-encoded NCName
357
+ #
358
+ def self.to_ncname_58 uuid, version: nil, align: true
359
+ to_ncname uuid, radix: 58, version: version, align: align
360
+ end
361
+
362
+ # Shorthand for conversion from the Base58 version
363
+ #
364
+ # @param ncname [#to_s] The Base58 variant of the NCName-encoded UUID
365
+ #
366
+ # @param format [:str, :hex, :b64, :bin] The format
367
+ #
368
+ # @param version [0, 1] See ::to_ncname.
369
+ #
370
+ # @param align [true, false] See ::to_ncname.
371
+ #
372
+ # @return [String, nil] The corresponding UUID or nil if the input
373
+ # is malformed.
374
+ #
375
+ def self.from_ncname_58 ncname, format: :str, version: nil, align: nil
376
+ from_ncname ncname, radix: 58, format: format
377
+ end
378
+
299
379
  # Shorthand for conversion to the Base32 version
300
380
  #
301
381
  # @param uuid [#to_s] The UUID
302
382
  #
303
- # @param version [0, 1] See `to_ncname`.
383
+ # @param version [0, 1] See ::to_ncname.
304
384
  #
305
- # @param align [true, false] See `to_ncname`.
385
+ # @param align [true, false] See ::to_ncname.
306
386
  #
307
387
  # @return [String] The Base32-encoded NCName
308
-
388
+ #
309
389
  def self.to_ncname_32 uuid, version: nil, align: true
310
390
  to_ncname uuid, radix: 32, version: version, align: align
311
391
  end
@@ -316,35 +396,55 @@ module UUID::NCName
316
396
  #
317
397
  # @param format [:str, :hex, :b64, :bin] The format
318
398
  #
319
- # @param version [0, 1] See `to_ncname`.
399
+ # @param version [0, 1] See ::to_ncname.
320
400
  #
321
- # @param align [true, false] See `to_ncname`.
401
+ # @param align [true, false] See ::to_ncname.
322
402
  #
323
403
  # @return [String, nil] The corresponding UUID or nil if the input
324
404
  # is malformed.
325
-
405
+ #
326
406
  def self.from_ncname_32 ncname, format: :str, version: nil, align: nil
327
407
  from_ncname ncname, radix: 32, format: format
328
408
  end
329
409
 
330
- # Test if the given token is a UUID NCName, with a hint to its version.
410
+ # Test if the given token is a UUID NCName, with a hint to its
411
+ # version. This method can positively identify a token as a UUID
412
+ # NCName, but there is a small subset of UUIDs which will produce
413
+ # tokens which are valid in both versions. The method returns
414
+ # `false` if the token is invalid, otherwise it returns `0` or `1`
415
+ # for the guessed version.
416
+ #
417
+ # @note Version 1 tokens always end with `I`, `J`, `K`, or `L` (with
418
+ # base32 being case-insensitive), so tokens that end in something
419
+ # else will always be version 0.
331
420
  #
332
421
  # @param token [#to_s] The token to test
333
422
  #
423
+ # @param strict [false, true]
424
+ #
334
425
  # @return [false, 0, 1]
335
- def self.valid? token
426
+ #
427
+ def self.valid? token, strict: false
336
428
  token = token.to_s
337
- if /^[A-P](?:[0-9A-Za-z_-]{21}|[2-7A-Za-z]{25})$/.match token
429
+ if MATCH.match? token
338
430
  # false is definitely version zero but true is only maybe version 1
339
- version = /[IJKLijkl]$/.match(token) ? 1 : 0
431
+ version = /^(?:.{21}[I-L]|.{25}[I-Li-l])$/.match(token) ? 1 : 0
340
432
 
341
- if version == 1
342
- uu = from_ncname token, version: 1
343
- # lol even this isn't a guarantee
344
- /[89ab]/.match(uu[19]) ? 1 : version
345
- else
346
- version
433
+ # try decoding with validation on
434
+ uu = from_ncname token, version: version, validate: true
435
+
436
+ # note that version 1 will always return something because the
437
+ # method of detecting it is a version 1 also happens to be the
438
+ # method of determining whether or not it is valid.
439
+ return false unless uu
440
+
441
+ if version == 1 and strict
442
+ # but we can also check if the input is a valid version 0
443
+ u0 = from_ncname token, version: 0, validate: true
444
+ raise AmbiguousToken.new(token, v0: u0, v1: uu) if u0
347
445
  end
446
+
447
+ version
348
448
  else
349
449
  false
350
450
  end
@@ -1,7 +1,10 @@
1
+ # this is here because it reasonable to expect a *class* in the
2
+ # namespace called UUID, so if you say `module UUID; module NCName`,
3
+ # it will croak with a "TypeError: UUID is not a module".
1
4
  unless Module.const_defined? 'UUID'
2
5
  module UUID; end
3
6
  end
4
7
 
5
8
  module UUID::NCName
6
- VERSION = "0.2.3"
9
+ VERSION = "0.3.1"
7
10
  end
@@ -32,10 +32,11 @@ DESC
32
32
  # surprisingly do not need this
33
33
  # spec.add_runtime_dependency 'uuidtools', '~> 2.1.5'
34
34
  spec.add_runtime_dependency 'base32', '~> 0.3.2'
35
+ spec.add_runtime_dependency 'base58', '~> 0.2.3'
35
36
 
36
- spec.add_development_dependency 'bundler', '~> 1.16'
37
- spec.add_development_dependency 'rake', '~> 10.0'
38
- spec.add_development_dependency 'rspec', '~> 3.0'
37
+ spec.add_development_dependency 'bundler', '~> 2.1'
38
+ spec.add_development_dependency 'rake', '~> 13.0'
39
+ spec.add_development_dependency 'rspec', '~> 3.9'
39
40
 
40
41
  # only need it for testing, who knew
41
42
  # spec.add_development_dependency 'uuidtools', '~> 2.1.5'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uuid-ncname
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian Taylor
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-15 00:00:00.000000000 Z
11
+ date: 2021-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base32
@@ -24,48 +24,62 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.3.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: base58
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.2.3
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '1.16'
47
+ version: '2.1'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '1.16'
54
+ version: '2.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '10.0'
61
+ version: '13.0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '10.0'
68
+ version: '13.0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '3.0'
75
+ version: '3.9'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '3.0'
82
+ version: '3.9'
69
83
  description: |
70
84
  This module creates an isomorphic representation of a UUID which is
71
85
  guaranteed to fit into the grammar of the XML NCName construct, which
@@ -81,6 +95,7 @@ files:
81
95
  - ".gitignore"
82
96
  - ".rspec"
83
97
  - ".travis.yml"
98
+ - ".yardopts"
84
99
  - Gemfile
85
100
  - LICENSE
86
101
  - README.md
@@ -95,7 +110,7 @@ homepage: https://github.com/doriantaylor/rb-uuid-ncname
95
110
  licenses:
96
111
  - Apache-2.0
97
112
  metadata: {}
98
- post_install_message:
113
+ post_install_message:
99
114
  rdoc_options: []
100
115
  require_paths:
101
116
  - lib
@@ -110,8 +125,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
125
  - !ruby/object:Gem::Version
111
126
  version: '0'
112
127
  requirements: []
113
- rubygems_version: 3.0.3
114
- signing_key:
128
+ rubygems_version: 3.1.4
129
+ signing_key:
115
130
  specification_version: 4
116
131
  summary: Format a UUID as a valid NCName.
117
132
  test_files: []