ruby-ulid 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +63 -95
- data/lib/ulid/crockford_base32.rb +12 -12
- data/lib/ulid/errors.rb +1 -0
- data/lib/ulid/monotonic_generator.rb +14 -14
- data/lib/ulid/utils.rb +6 -24
- data/lib/ulid/uuid.rb +61 -31
- data/lib/ulid/version.rb +1 -1
- data/lib/ulid.rb +102 -116
- data/sig/ulid.rbs +137 -88
- metadata +7 -7
data/sig/ulid.rbs
CHANGED
@@ -3,8 +3,6 @@ class ULID < Object
|
|
3
3
|
TIMESTAMP_ENCODED_LENGTH: 10
|
4
4
|
RANDOMNESS_ENCODED_LENGTH: 16
|
5
5
|
ENCODED_LENGTH: 26
|
6
|
-
TIMESTAMP_OCTETS_LENGTH: 6
|
7
|
-
RANDOMNESS_OCTETS_LENGTH: 10
|
8
6
|
OCTETS_LENGTH: 16
|
9
7
|
MAX_MILLISECONDS: 281474976710655
|
10
8
|
MAX_ENTROPY: 1208925819614629174706175
|
@@ -14,7 +12,6 @@ class ULID < Object
|
|
14
12
|
PATTERN_WITH_CROCKFORD_BASE32_SUBSET: Regexp
|
15
13
|
STRICT_PATTERN_WITH_CROCKFORD_BASE32_SUBSET: Regexp
|
16
14
|
SCANNING_PATTERN: Regexp
|
17
|
-
UUIDV4_PATTERN: Regexp
|
18
15
|
MIN: ULID
|
19
16
|
MAX: ULID
|
20
17
|
include Comparable
|
@@ -34,9 +31,37 @@ class ULID < Object
|
|
34
31
|
class UnexpectedError < Error
|
35
32
|
end
|
36
33
|
|
34
|
+
class IrreversibleUUIDError < Error
|
35
|
+
end
|
36
|
+
|
37
|
+
module UUID
|
38
|
+
BASE_PATTERN: Regexp
|
39
|
+
V4_PATTERN: Regexp
|
40
|
+
|
41
|
+
def self.parse_any_to_int: (String) -> Integer
|
42
|
+
def self.parse_v4_to_int: (String) -> Integer
|
43
|
+
|
44
|
+
class Fields < Struct[Integer]
|
45
|
+
attr_accessor time_low: Integer
|
46
|
+
attr_accessor time_mid: Integer
|
47
|
+
attr_accessor time_hi_and_version: Integer
|
48
|
+
attr_accessor clock_seq_hi_and_res: Integer
|
49
|
+
attr_accessor clk_seq_low: Integer
|
50
|
+
attr_accessor node: Integer
|
51
|
+
def self.raw_from_octets: (octets) -> Fields
|
52
|
+
def self.forced_v4_from_octets: (octets) -> Fields
|
53
|
+
|
54
|
+
def values: -> Array[Integer]
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def initialize: (?time_low: Integer, ?time_mid: Integer, ?time_hi_and_version: Integer, ?clock_seq_hi_and_res: Integer, ?clk_seq_low: Integer, ?node: Integer) -> void
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
37
62
|
# Private module
|
38
63
|
module Utils
|
39
|
-
def self.
|
64
|
+
def self.encode_base32hex: (milliseconds: milliseconds, entropy: Integer) -> String
|
40
65
|
|
41
66
|
def self.current_milliseconds: -> milliseconds
|
42
67
|
|
@@ -48,9 +73,7 @@ class ULID < Object
|
|
48
73
|
|
49
74
|
def self.safe_get_class_name: (untyped object) -> String
|
50
75
|
|
51
|
-
def self.
|
52
|
-
|
53
|
-
def self.make_sharable_constantans: (Module) -> void
|
76
|
+
def self.make_sharable_constants: (Module) -> void
|
54
77
|
|
55
78
|
def self.ractor_can_make_shareable_time?: -> bool
|
56
79
|
end
|
@@ -59,7 +82,7 @@ class ULID < Object
|
|
59
82
|
module CrockfordBase32
|
60
83
|
ENCODING_STRING: String
|
61
84
|
CROCKFORD_TR_PATTERN: String
|
62
|
-
|
85
|
+
BASE32HEX_TR_PATTERN: String
|
63
86
|
VARIANT_TR_PATTERN: String
|
64
87
|
NORMALIZED_TR_PATTERN: String
|
65
88
|
|
@@ -69,67 +92,60 @@ class ULID < Object
|
|
69
92
|
|
70
93
|
def self.normalize: (String string) -> String
|
71
94
|
|
72
|
-
def self.
|
95
|
+
def self.from_base32hex: (String base32hex) -> String
|
73
96
|
end
|
74
97
|
|
75
98
|
class MonotonicGenerator
|
76
99
|
include MonitorMixin
|
77
100
|
|
78
|
-
# Returned value is `basically not` Thread-safety
|
101
|
+
# Returned value is `basically not` Thread-safety\
|
79
102
|
# If you want to keep Thread-safety, keep to call {#generate} only in same {#synchronize} block
|
80
103
|
#
|
81
104
|
# ```ruby
|
82
105
|
# generator.synchronize do
|
83
|
-
# generator.
|
106
|
+
# generator.last
|
84
107
|
# generator.inspect
|
85
108
|
# generator.generate
|
86
109
|
# end
|
87
110
|
# ```
|
88
|
-
attr_reader
|
111
|
+
attr_reader last: ULID | nil
|
89
112
|
|
90
|
-
# See [How to keep `Sortable` even if in same timestamp](https://github.com/kachick/ruby-ulid#how-to-keep-sortable-even-if-in-same-timestamp)
|
113
|
+
# See [How to keep `Sortable` even if in same timestamp](https://github.com/kachick/ruby-ulid#how-to-keep-sortable-even-if-in-same-timestamp)\
|
91
114
|
# The `Thread-safety` is implemented with [Monitor](https://bugs.ruby-lang.org/issues/16255)
|
92
115
|
def generate: (?moment: moment) -> ULID
|
93
116
|
|
94
117
|
# Just providing similar api as `ULID.generate` and `ULID.encode` relation. No performance benefit exists in monotonic generator's one.
|
95
118
|
def encode: (?moment: moment) -> String
|
96
119
|
|
97
|
-
# Returned value is `basically not` Thread-safety
|
120
|
+
# Returned value is `basically not` Thread-safety\
|
98
121
|
# If you want to keep Thread-safety, keep to call {#generate} only in same {#synchronize} block
|
99
122
|
#
|
100
123
|
# ```ruby
|
101
124
|
# generator.synchronize do
|
102
|
-
# generator.
|
125
|
+
# generator.last
|
103
126
|
# generator.inspect
|
104
127
|
# generator.generate
|
105
128
|
# end
|
106
129
|
# ```
|
107
130
|
def inspect: -> String
|
108
131
|
alias to_s inspect
|
109
|
-
def freeze: -> void
|
110
132
|
|
111
133
|
private
|
112
134
|
|
113
135
|
def initialize: -> void
|
114
136
|
|
115
|
-
def
|
137
|
+
def last=: (ULID?) -> void
|
116
138
|
end
|
117
139
|
|
118
140
|
interface _ToULID
|
119
141
|
def to_ulid: () -> ULID
|
120
142
|
end
|
121
143
|
|
122
|
-
type
|
123
|
-
type timestamp_octets = [Integer, Integer, Integer, Integer, Integer, Integer] | Array[Integer]
|
124
|
-
type randomness_octets = [Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer] | Array[Integer]
|
144
|
+
type octets = [Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer] | Array[Integer]
|
125
145
|
type period = Range[Time] | Range[nil] | Range[ULID]
|
126
146
|
|
127
147
|
@integer: Integer
|
128
148
|
@encoded: String
|
129
|
-
@timestamp: String?
|
130
|
-
@randomness: String?
|
131
|
-
@inspect: String?
|
132
|
-
@time: Time?
|
133
149
|
|
134
150
|
# Retuns a ULID
|
135
151
|
#
|
@@ -167,14 +183,13 @@ class ULID < Object
|
|
167
183
|
#
|
168
184
|
def self.generate: (?moment: moment, ?entropy: Integer) -> ULID
|
169
185
|
|
170
|
-
# Retuns encoded and normalzied String
|
171
|
-
# It has same arguments signatures as `.generate
|
172
|
-
#
|
173
|
-
# NOTE: Difference of ULID#encode, returned String is NOT frozen.
|
186
|
+
# Retuns encoded and normalzied String.\
|
187
|
+
# It has same arguments signatures as `.generate`\
|
188
|
+
# So can be used for just ID creation usecases without needless object creation.
|
174
189
|
#
|
175
190
|
def self.encode: (?moment: moment, ?entropy: Integer) -> String
|
176
191
|
|
177
|
-
# Shorthand of `ULID.generate(moment: Time)
|
192
|
+
# Shorthand of `ULID.generate(moment: Time)`\
|
178
193
|
# See also [ULID.generate](https://kachick.github.io/ruby-ulid/ULID.html#generate-class_method)
|
179
194
|
#
|
180
195
|
# ```ruby
|
@@ -188,7 +203,8 @@ class ULID < Object
|
|
188
203
|
# ```
|
189
204
|
def self.at: (Time time) -> ULID
|
190
205
|
|
191
|
-
# `ULID` can be element of the `Range
|
206
|
+
# `ULID` can be element of the `Range`.\
|
207
|
+
# If you generated the IDs in monotonic generator, ID based filtering is easy and reliable
|
192
208
|
#
|
193
209
|
# ```ruby
|
194
210
|
# include_end = ulid1..ulid2
|
@@ -236,16 +252,18 @@ class ULID < Object
|
|
236
252
|
# ```
|
237
253
|
def self.parse: (_ToStr string) -> ULID
|
238
254
|
|
239
|
-
|
255
|
+
type time_in = String | Integer | nil
|
256
|
+
|
257
|
+
# Return Time instance from encoded String.\
|
240
258
|
# See also `ULID.encode` for similar purpose.
|
241
259
|
#
|
242
|
-
# NOTE: Difference of ULID#to_time, returned Time is NOT frozen.
|
243
|
-
#
|
244
260
|
# ```ruby
|
245
261
|
# time = ULID.decode_time('01ARZ3NDEKTSV4RRFFQ69G5FAV')
|
246
262
|
# #=> 2016-07-30 23:54:10.259 UTC
|
263
|
+
# ULID.decode_time('01ARZ3NDEKTSV4RRFFQ69G5FAV', in: '+09:00')
|
264
|
+
# #=> 2016-07-31 08:54:10.259 +0900
|
247
265
|
# ```
|
248
|
-
def self.decode_time: (_ToStr string, ?in:
|
266
|
+
def self.decode_time: (_ToStr string, ?in: time_in) -> Time
|
249
267
|
|
250
268
|
# Get ULID instance from unnormalized String that encoded in Crockford's base32.
|
251
269
|
#
|
@@ -262,18 +280,35 @@ class ULID < Object
|
|
262
280
|
# See also [ulid/spec#57](https://github.com/ulid/spec/pull/57) and [ulid/spec#3](https://github.com/ulid/spec/issues/3)
|
263
281
|
def self.parse_variant_format: (_ToStr string) -> ULID
|
264
282
|
|
283
|
+
# Load a UUID-like string without checking version and variants.
|
284
|
+
#
|
265
285
|
# ```ruby
|
266
|
-
#
|
267
|
-
#
|
286
|
+
# ULID.from_uuidish('123e4567-e89b-12d3-a456-426614174000')
|
287
|
+
# #=> ULID(2605-08-20 10:28:29.979 UTC: 0J7S2PFT4V2B9T8NJ2CRA1EG00)
|
288
|
+
# ```
|
289
|
+
#
|
290
|
+
# See also [ULID.from_uuidv4]
|
291
|
+
def self.from_uuidish: (String uuidish) -> ULID
|
292
|
+
|
293
|
+
# Load a UUIDv4 string with checking version and variants.
|
268
294
|
#
|
269
|
-
#
|
270
|
-
#
|
295
|
+
# ```ruby
|
296
|
+
# ULID.from_uuidv4('0983d0a2-ff15-4d83-8f37-7dd945b5aa39')
|
271
297
|
# #=> ULID(2301-07-10 00:28:28.821 UTC: 09GF8A5ZRN9P1RYDVXV52VBAHS)
|
272
|
-
#
|
298
|
+
# ULID.from_uuidv4('123e4567-e89b-12d3-a456-426614174000')
|
299
|
+
# #=> ULID::ParserError
|
273
300
|
# ```
|
274
301
|
#
|
275
|
-
# See also [
|
302
|
+
# See also [ULID.from_uuidish]
|
276
303
|
def self.from_uuidv4: (String uuid) -> ULID
|
304
|
+
|
305
|
+
# Load integer as ULID
|
306
|
+
#
|
307
|
+
# ```ruby
|
308
|
+
# ulid = ULID.parse('01GTXYCWNDKRYH14DBZ77TRSD7')
|
309
|
+
# ULID.from_integer(ulid.to_i)
|
310
|
+
# #=> ULID(2023-03-07 11:48:07.469 UTC: 01GTXYCWNDKRYH14DBZ77TRSD7)
|
311
|
+
# ```
|
277
312
|
def self.from_integer: (Integer integer) -> ULID
|
278
313
|
|
279
314
|
# Returns termination values for ULID spec.
|
@@ -334,7 +369,8 @@ class ULID < Object
|
|
334
369
|
# # ULID(2665-03-16 14:50:22.724 UTC: 0KYFW9DWM4CEGFNTAC6YFAVVJ6)]
|
335
370
|
# ```
|
336
371
|
#
|
337
|
-
# You can specify a range object for the timestamp restriction
|
372
|
+
# You can specify a range object for the timestamp restriction.\
|
373
|
+
# See also [ULID.range](https://kachick.github.io/ruby-ulid/ULID.html#range-class_method)
|
338
374
|
#
|
339
375
|
# ```ruby
|
340
376
|
# ulid1 = ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA') #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
|
@@ -395,19 +431,6 @@ class ULID < Object
|
|
395
431
|
def self.valid_as_variant_format?: (_ToStr string) -> bool
|
396
432
|
| (untyped) -> false
|
397
433
|
|
398
|
-
# DEPRECATED Use valid_as_variant_format? instead
|
399
|
-
#
|
400
|
-
# Returns `true` if it is normalized string.
|
401
|
-
# Basically the difference of normalized? is to accept downcase or not. This returns true for downcased ULIDs.
|
402
|
-
#
|
403
|
-
# ```ruby
|
404
|
-
# ULID.valid?(ULID.generate.to_s.downcase) #=> true
|
405
|
-
# ```
|
406
|
-
#
|
407
|
-
# See also [ulid/spec#57](https://github.com/ulid/spec/pull/57) and [ulid/spec#3](https://github.com/ulid/spec/issues/3)
|
408
|
-
def self.valid?: (_ToStr string) -> bool
|
409
|
-
| (untyped) -> false
|
410
|
-
|
411
434
|
# Returns parsed ULIDs from given String for rough operations.
|
412
435
|
#
|
413
436
|
# ```ruby
|
@@ -450,6 +473,7 @@ class ULID < Object
|
|
450
473
|
def self.scan: (_ToStr string) -> Enumerator[self, singleton(ULID)]
|
451
474
|
| (_ToStr string) { (ULID ulid) -> void } -> singleton(ULID)
|
452
475
|
|
476
|
+
# Returns nil if given object is not a ULID
|
453
477
|
def self.try_convert: (_ToULID) -> ULID
|
454
478
|
| (untyped) -> nil
|
455
479
|
|
@@ -459,14 +483,16 @@ class ULID < Object
|
|
459
483
|
# ulid.milliseconds #=> 1619544442826
|
460
484
|
# ```
|
461
485
|
attr_reader milliseconds: Integer
|
486
|
+
|
462
487
|
attr_reader entropy: Integer
|
463
488
|
|
489
|
+
# Private api. (Actually defined protected visibility)
|
490
|
+
attr_reader encoded: String
|
491
|
+
|
464
492
|
# ```ruby
|
465
493
|
# ulid = ULID.generate
|
466
494
|
# #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
|
467
495
|
# ulid.encode #=> "01F4A5Y1YAQCYAYCTC7GRMJ9AA"
|
468
|
-
# ulid.encode.frozen? #=> true
|
469
|
-
# ulid.encode.equal?(ulid.to_s) #=> true
|
470
496
|
# ```
|
471
497
|
def encode: -> String
|
472
498
|
alias to_s encode
|
@@ -489,7 +515,7 @@ class ULID < Object
|
|
489
515
|
# #=> true
|
490
516
|
# ```
|
491
517
|
#
|
492
|
-
# To be precise, this sorting unaffected with `case sensitive or not` and might handle [ulid/spec#57](https://github.com/ulid/spec/pull/57) in future
|
518
|
+
# To be precise, this sorting unaffected with `case sensitive or not` and might handle [ulid/spec#57](https://github.com/ulid/spec/pull/57) in future.\
|
493
519
|
# So preferable than `lexicographically sortable` in actual case.
|
494
520
|
#
|
495
521
|
# This returns -1 | 0 | 1 for ULIDs. However defined as returning Integer. It is caused on ruby/rbs current definition.
|
@@ -499,6 +525,8 @@ class ULID < Object
|
|
499
525
|
def <=>: (ULID other) -> Integer
|
500
526
|
| (untyped other) -> nil
|
501
527
|
|
528
|
+
# Returns human readable strings that used by Kernel.#p
|
529
|
+
#
|
502
530
|
# ```ruby
|
503
531
|
# ulid = ULID.generate
|
504
532
|
# ulid.inspect #=> "ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)"
|
@@ -513,7 +541,7 @@ class ULID < Object
|
|
513
541
|
| (untyped other) -> false
|
514
542
|
alias == eql?
|
515
543
|
|
516
|
-
# Return `true` for same value of ULID, variant formats of strings, same Time in ULID precision(msec)
|
544
|
+
# Return `true` for same value of ULID, variant formats of strings, same Time in ULID precision(msec).\
|
517
545
|
# Do not consider integer, octets and partial strings, then returns `false`.
|
518
546
|
#
|
519
547
|
# ```ruby
|
@@ -533,12 +561,15 @@ class ULID < Object
|
|
533
561
|
| (untyped other) -> false
|
534
562
|
|
535
563
|
# ```ruby
|
536
|
-
#
|
537
|
-
# #=>
|
538
|
-
#
|
564
|
+
# ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA').to_time
|
565
|
+
# #=> 2021-04-27 17:27:22.826 UTC
|
566
|
+
# ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA').to_time(in: '+09:00')
|
567
|
+
# #=> 2021-04-28 02:27:22.826 +0900
|
539
568
|
# ```
|
540
|
-
def to_time: -> Time
|
569
|
+
def to_time: (?in: time_in) -> Time
|
541
570
|
|
571
|
+
# Returns timestamp(prefix) part of encoded ULID
|
572
|
+
#
|
542
573
|
# ```ruby
|
543
574
|
# ulid = ULID.generate
|
544
575
|
# #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
|
@@ -546,6 +577,8 @@ class ULID < Object
|
|
546
577
|
# ```
|
547
578
|
def timestamp: -> String
|
548
579
|
|
580
|
+
# Returns randomness(suffix) part of encoded ULID
|
581
|
+
#
|
549
582
|
# ```ruby
|
550
583
|
# ulid = ULID.generate
|
551
584
|
# #=> ULID(2021-04-27 17:27:22.826 UTC: 01F4A5Y1YAQCYAYCTC7GRMJ9AA)
|
@@ -553,27 +586,15 @@ class ULID < Object
|
|
553
586
|
# ```
|
554
587
|
def randomness: -> String
|
555
588
|
|
556
|
-
#
|
557
|
-
# Because the returning values are not fixed.
|
558
|
-
def patterns: -> Hash[Symbol, Regexp | String]
|
559
|
-
def octets: -> full_octets
|
560
|
-
def timestamp_octets: -> timestamp_octets
|
561
|
-
def randomness_octets: -> randomness_octets
|
562
|
-
|
563
|
-
# ```ruby
|
564
|
-
# # Currently experimental feature, so needed to load the extension.
|
565
|
-
# require 'ulid/uuid'
|
589
|
+
# Returns 6 + 10 octets(bytes) represented with Array[Integer]
|
566
590
|
#
|
567
|
-
#
|
568
|
-
# ulid = ULID.
|
569
|
-
# #=>
|
570
|
-
# ulid.to_uuidv4 #=> "0983d0a2-ff15-4d83-8f37-7dd945b5aa39"
|
591
|
+
# ```ruby
|
592
|
+
# ulid = ULID.parse('01F4A5Y1YAQCYAYCTC7GRMJ9AA')
|
593
|
+
# ulid.octets #=> [1, 121, 20, 95, 7, 202, 187, 60, 175, 51, 76, 60, 49, 73, 37, 74]
|
571
594
|
# ```
|
572
|
-
|
573
|
-
# See also [Why this is experimental?](https://github.com/kachick/ruby-ulid/issues/76)
|
574
|
-
def to_uuidv4: -> String
|
595
|
+
def octets: -> octets
|
575
596
|
|
576
|
-
# Returns next(successor) ULID
|
597
|
+
# Returns next(successor) ULID.\
|
577
598
|
# Especially `ULID#succ` makes it possible `Range[ULID]#each`.
|
578
599
|
#
|
579
600
|
# NOTE: But basically `Range[ULID]#each` should not be used, incrementing 128 bits IDs are not reasonable operation in most case
|
@@ -598,7 +619,6 @@ class ULID < Object
|
|
598
619
|
#
|
599
620
|
# See also [ULID#succ](https://kachick.github.io/ruby-ulid/ULID.html#succ-instance_method)
|
600
621
|
def pred: -> ULID?
|
601
|
-
def freeze: -> self
|
602
622
|
|
603
623
|
def marshal_dump: -> Integer
|
604
624
|
|
@@ -607,16 +627,45 @@ class ULID < Object
|
|
607
627
|
# Returns `self`
|
608
628
|
def to_ulid: -> self
|
609
629
|
|
610
|
-
#
|
611
|
-
|
630
|
+
# Generate a UUID-like string that does not set the version and variants field.\
|
631
|
+
# It means wrong in UUIDv4 spec, but reversible
|
632
|
+
#
|
633
|
+
# ```ruby
|
634
|
+
# ulid = ULID.parse('01GTXYCWNDKRYH14DBZ77TRSD7')
|
635
|
+
# ulid.to_uuidish #-> '0186bbe6-72ad-9e3d-1091-abf9cfac65a7'
|
636
|
+
# ULID.from_uuidish(ulid.to_uuidish) #=> ULID(2023-03-07 11:48:07.469 UTC: 01GTXYCWNDKRYH14DBZ77TRSD7)
|
637
|
+
# ```
|
638
|
+
#
|
639
|
+
# See also [ULID.from_uuidish], [ULID#to_uuidv4], [ulid/spec#64](https://github.com/ulid/spec/issues/64)
|
640
|
+
def to_uuidish: -> String
|
612
641
|
|
613
|
-
#
|
614
|
-
#
|
615
|
-
|
642
|
+
# Generate a UUIDv4-like string that sets the version and variants field.\
|
643
|
+
# It may conform to the UUID specification, but it is irreversible with the source ULID and may conflict with some other ULIDs.\
|
644
|
+
# You can specify `force` keyword argument to turn off the irreversible check
|
645
|
+
#
|
646
|
+
# ```ruby
|
647
|
+
# uuid = '0983d0a2-ff15-4d83-8f37-7dd945b5aa39'
|
648
|
+
# ulid = ULID.from_uuidv4(uuid)
|
649
|
+
# ulid.to_uuidv4 #=> 0983d0a2-ff15-4d83-8f37-7dd945b5aa39
|
650
|
+
# ```
|
651
|
+
#
|
652
|
+
# ```ruby
|
653
|
+
# ulid = ULID.from_uuidish('0186bbe6-72ad-9e3d-1091-abf9cfac65a7')
|
654
|
+
# ulid.to_uuidv4 #=> ULID::IrreversibleUUIDError
|
655
|
+
# ulid.to_uuidv4(force: true) #=> '0186bbe6-72ad-4e3d-9091-abf9cfac65a7'
|
656
|
+
# ```
|
657
|
+
#
|
658
|
+
# See also [ULID.from_uuidv4], [ULID#to_uuidish], [ulid/spec#64](https://github.com/ulid/spec/issues/64)
|
659
|
+
def to_uuidv4: (?force: boolish) -> String
|
660
|
+
|
661
|
+
# Returns same ID with different Ruby object.
|
662
|
+
def dup: -> ULID
|
663
|
+
|
664
|
+
# Returns same ID with different Ruby object.::Array::_Pattern\
|
665
|
+
# `freeze` keyarg is just provided for standardized API with `Object#clone`, however it accepts only `true`.
|
666
|
+
def clone: (?freeze: true) -> ULID
|
616
667
|
|
617
668
|
private
|
618
669
|
|
619
670
|
def initialize: (milliseconds: milliseconds, entropy: Integer, integer: Integer, encoded: String) -> void
|
620
|
-
|
621
|
-
def cache_all_instance_variables: -> void
|
622
671
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-ulid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenichi Kamiya
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: " generator, optional monotonicity, parser and tools for ULID (RBS
|
14
14
|
included)\n"
|
@@ -38,7 +38,7 @@ metadata:
|
|
38
38
|
source_code_uri: https://github.com/kachick/ruby-ulid
|
39
39
|
bug_tracker_uri: https://github.com/kachick/ruby-ulid/issues
|
40
40
|
rubygems_mfa_required: 'true'
|
41
|
-
post_install_message:
|
41
|
+
post_install_message:
|
42
42
|
rdoc_options: []
|
43
43
|
require_paths:
|
44
44
|
- lib
|
@@ -46,15 +46,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
46
46
|
requirements:
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version:
|
49
|
+
version: '3.1'
|
50
50
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
requirements: []
|
56
|
-
rubygems_version: 3.
|
57
|
-
signing_key:
|
56
|
+
rubygems_version: 3.4.6
|
57
|
+
signing_key:
|
58
58
|
specification_version: 4
|
59
59
|
summary: ULID manipulation library
|
60
60
|
test_files: []
|