|
- /// A UUID generator library.
- library uuid;
-
- import 'dart:math' show Random;
-
- /// A UUID generator.
- ///
- /// This will generate unique IDs in the format:
- ///
- /// f47ac10b-58cc-4372-a567-0e02b2c3d479
- ///
- /// The generated uuids are 128 bit numbers encoded in a specific string format.
- /// For more information, see
- /// [en.wikipedia.org/wiki/Universally_unique_identifier](http://en.wikipedia.org/wiki/Universally_unique_identifier).
- class Uuid {
- final Random _random = new Random();
-
- /// Generate a version 4 (random) uuid. This is a uuid scheme that only uses
- /// random numbers as the source of the generated uuid.
- String generateV4() {
- // Generate xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx / 8-4-4-4-12.
- int special = 8 + _random.nextInt(4);
-
- return '${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}-'
- '${_bitsDigits(16, 4)}-'
- '4${_bitsDigits(12, 3)}-'
- '${_printDigits(special, 1)}${_bitsDigits(12, 3)}-'
- '${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}';
- }
-
- String _bitsDigits(int bitCount, int digitCount) =>
- _printDigits(_generateBits(bitCount), digitCount);
-
- int _generateBits(int bitCount) => _random.nextInt(1 << bitCount);
-
- String _printDigits(int value, int count) =>
- value.toRadixString(16).padLeft(count, '0');
- }
|