Vim documentation: vital/ID/UUID
main help file
vital/ID/UUID.txt UUID:Universally Unique Identifier library.
Maintainer: Tsuyoshi CHO <Tsuyoshi.CHO+develop@Gmail.com>
==============================================================================
CONTENTS Vital.ID.UUID-contents
INTRODUCTION Vital.ID.UUID-introduction
INTERFACE Vital.ID.UUID-interface
Functions Vital.ID.UUID-functions
MAC ADDRESS Vital.ID.UUID-mac
OBJECTS Vital.ID.UUID-objects
UUID Object Vital.ID.UUID-UUID
==============================================================================
INTRODUCTION Vital.ID.UUID-introduction
Vital.ID.UUID is an UUID:Universally Unique Identifier library.
It provides functions manipulate UUID data object.
UUID defined in RFC 9562
https://www.rfc-editor.org/rfc/rfc9562
==============================================================================
INTERFACE Vital.ID.UUID-interface
------------------------------------------------------------------------------
FUNCTIONS Vital.ID.UUID-functions
new() Vital.ID.UUID.new()
Return UUID non-data object.
decode({uuid-str}) Vital.ID.UUID.decode()
Return UUID {uuid-str} decoded object.
v1({mac}) Vital.ID.UUID.v1()
Return UUID version 1 value.
This function wrapped Vital.ID.UUID-UUID.generatev1() .
See Vital.ID.UUID-mac for MAC address formats.
Also known as:
let uuid = UUID.new()
call uuid.generatev1({mac})
let result = uuid.uuid_hex
v3({ns}, {value}) Vital.ID.UUID.v3()
Return UUID version 3 value.
This function wrapped Vital.ID.UUID-UUID.generatev3() .
Also known as:
let uuid = UUID.new()
call uuid.generatev3({ns}, {value})
let result = uuid.uuid_hex
v4() Vital.ID.UUID.v4()
Return UUID version 4 value.
This function wrapped Vital.ID.UUID-UUID.generatev4() .
Also known as:
let uuid = UUID.new()
call uuid.generatev4()
let result = uuid.uuid_hex
v5({ns}, {value}) Vital.ID.UUID.v5()
Return UUID version 5 value.
This function wrapped Vital.ID.UUID-UUID.generatev5() .
Also known as:
let uuid = UUID.new()
call uuid.generatev5({ns}, {value})
let result = uuid.uuid_hex
v6({mac}) Vital.ID.UUID.v6()
Return UUID version 6 value.
This function wrapped Vital.ID.UUID-UUID.generatev6() .
See Vital.ID.UUID-mac for MAC address formats.
Also known as:
let uuid = UUID.new()
call uuid.generatev6({mac})
let result = uuid.uuid_hex
v7() Vital.ID.UUID.v7()
Return UUID version 7 value.
This function wrapped Vital.ID.UUID-UUID.generatev7() .
Also known as:
let uuid = UUID.new()
call uuid.generatev7()
let result = uuid.uuid_hex
Note: UUID version 8 is defined in RFC 9562 as a custom UUID format for experimental or vendor-specific use cases. It is not implemented in this library as it requires application-specific customization and is outside the scope of standard UUID generation.
==============================================================================
MAC ADDRESS Vital.ID.UUID-mac
MAC address is a 48-bit (6-octet) identifier used in network interfaces,
defined in IEEE 802 standards. In UUID generation, it serves as a node
identifier for time-based UUIDs (versions 1 and 6).
Accepted formats for {mac} parameter:
- String with colons: "aa:bb:cc:dd:ee:ff"
- String with dashes: "aa-bb-cc-dd-ee-ff"
- List of integers: [0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff]
- Vim blob: 0zaabbccddeeff
Hex string format (e.g., "aabbccddeeff") is NOT accepted.
Examples:
" Generate v1 UUID with colon-separated MAC
let uuid1 = UUID.v1("00:11:22:33:44:55")
" Generate v1 UUID with dash-separated MAC
let uuid2 = UUID.v1("00-11-22-33-44-55")
" Generate v1 UUID with byte list
let uuid3 = UUID.v1([0x00, 0x11, 0x22, 0x33, 0x44, 0x55])
" Generate v1 UUID with blob
let uuid4 = UUID.v1(0z001122334455)
" Same applies to v6
let uuid5 = UUID.v6("00:11:22:33:44:55")
==============================================================================
OBJECTS Vital.ID.UUID-objects
------------------------------------------------------------------------------
UUID Object Vital.ID.UUID-UUID
UUID object is a dictionary that has parameters in below.
{
\ 'uuid_hex': '',
\ 'string' : {
\ 'time_low' : '',
\ 'time_mid' : '',
\ 'time_hi_and_version' : '',
\ 'clock' : '',
\ 'node' : '',
\ },
\ 'endian': 0,
\ 'bytes' : [],
\ 'value' : {
\ 'time_low' : [],
\ 'time_mid' : [],
\ 'time_hi_and_version' : [],
\ 'clk_seq_hi_res' : [],
\ 'clk_seq_low' : [],
\ 'node' : [],
\ },
\ 'variant' : 0,
\ 'version' : 0,
\}
uuid_hex is UUID hex format string.
string is inner params that split hex string to block.
endian is inner params that mean hex string data byte's endianess.
bytes is decoded bytes-list; big-endian style.
value is inner params that split bytes-list to block.
varian is inner params that mean RFC defined variant.
version is inner params that mean RFC variant's version.
UUID.generatev1({mac}) Vital.ID.UUID-UUID.generatev1()
Generate and fill version 1 UUID data.
Version 1 is time-based, generated from mac identified value.
See Vital.ID.UUID-mac for MAC address formats.
UUID.generatev3({ns}, {value}) Vital.ID.UUID-UUID.generatev3()
Generate and fill version 3 UUID data.
Version 3 use Vital.Hash.MD5 module.
{ns} as Vital.ID.UUID.Namespace defined value or other namespace UUID object or
hex string.
{value} as unique value.
UUID.generatev4() Vital.ID.UUID-UUID.generatev4()
Generate and fill version 4 UUID data.
Version 4 use Vital.Random module.
Version 4 generated from all random value.
UUID.generatev5({ns}, {value}) Vital.ID.UUID-UUID.generatev5()
Generate and fill version 5 UUID data.
Version 5 use Vital.Hash.SHA1 module.
{ns} as Vital.ID.UUID.Namespace defined value or other namespace UUID object or
hex string.
{value} as unique value.
UUID.generatev6({mac}) Vital.ID.UUID-UUID.generatev6()
Generate and fill version 6 UUID data.
Version 6 is reordered time-based, generated from mac identified value.
See Vital.ID.UUID-mac for MAC address formats.
UUID.generatev7() Vital.ID.UUID-UUID.generatev7()
Generate and fill version 7 UUID data.
Version 7 is Unix Epoch time-based, generated from Unix timestamp.
UUID.hex_decode() Vital.ID.UUID-UUID.hex_decode()
Decode UUID.uuid_hex, then fill UUID data.
Requires uuid_hex to be a valid UUID hex string (e.g., "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx").
Throws "format unmatch error" if invalid.
UUID.byte_encode() Vital.ID.UUID-UUID.byte_encode()
Encode UUID.bytes, then fill UUID data.
Requires bytes to be a list of exactly 16 integers (0-255).
Throws "bytes length error" if invalid length.
UUID.value_encode() Vital.ID.UUID-UUID.value_encode()
Encode UUID.value.*, then fill UUID data.
Requires value.* fields to be valid byte lists.
Throws "undefined variant" if variant is invalid.
UUID.build() Vital.ID.UUID-UUID.build()
Build UUID hex string from internal value fields.
Requires value.* fields to be properly set with valid byte lists.
Updates uuid_hex and string fields based on value fields.
Use only Vital module creators.
==============================================================================
vim:tw=78:fo=tcq2mM:ts=8:ft=help:norl:noet:fen:
top - main help file - tag index