class StatelyDB::UUID
encoding.
Internally this class uses the byte_string attribute to store the UUID as a string with the Encoding::ASCII_8BIT
and this class provides convenience methods for converting to the base16 representation specified in RFC 9562.
UUID is a helper class for working with UUIDs in StatelyDB. The ruby version of a StatelyDB is a binary string,
def self.parse(byte_string)
-
(StatelyDB::UUID)
-
Parameters:
-
byte_string
(String
) -- A binary-encoded string (eg: Encoding::ASCII_8BIT encoding) that is 16 bytes in length, or a
def self.parse(byte_string) return byte_string if byte_string.is_a?(StatelyDB::UUID) if valid_uuid?(byte_string) return new(byte_string) elsif byte_string.match(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i) return new([byte_string.delete("-")].pack("H*")) end raise "Invalid UUID" end
def self.valid_uuid?(byte_string)
-
(Boolean)
-
Parameters:
-
byte_string
(String
) -- A binary-encoded string (eg: Encoding::ASCII_8BIT encoding)
def self.valid_uuid?(byte_string) byte_string.encoding == Encoding::BINARY && byte_string.bytesize == 16 end
def <=>(other)
-
(Integer)
-
Parameters:
-
other
(StatelyDB::UUID
) --
def <=>(other) to_s <=> other.to_s end
def ==(other)
-
(Boolean)
-
Parameters:
-
other
(StatelyDB::UUID
) --
def ==(other) self.class == other.class && @byte_string == other.byte_string end
def empty?
-
(Boolean)
-
def empty? @byte_string.empty? end
def initialize(byte_string)
-
byte_string
(String
) -- A binary-encoded string (eg: Encoding::ASCII_8BIT encoding)
def initialize(byte_string) @byte_string = byte_string end
def to_base64
-
(String)
-
def to_base64 [@byte_string].pack("m0").tr("=", "").tr("+/", "-_") end
def to_s
-
(String)
-
def to_s to_str end
def to_str
-
(String)
-
def to_str @byte_string.unpack("H8H4H4H4H12").join("-") end