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