big consolidation
This commit is contained in:
55
fnf2014/js/hackordrink/uuid.js
Normal file
55
fnf2014/js/hackordrink/uuid.js
Normal file
@@ -0,0 +1,55 @@
|
||||
|
||||
**
|
||||
* UUID.core.js: The minimal subset of the RFC-compliant UUID generator UUID.js.
|
||||
*
|
||||
* @fileOverview
|
||||
* @author LiosK
|
||||
* @version core-1.0
|
||||
* @license The MIT License: Copyright (c) 2012 LiosK.
|
||||
*/
|
||||
|
||||
/** @constructor */
|
||||
function UUID() {}
|
||||
|
||||
/**
|
||||
* The simplest function to get an UUID string.
|
||||
* @returns {string} A version 4 UUID string.
|
||||
*/
|
||||
UUID.generate = function() {
|
||||
var rand = UUID._gri, hex = UUID._ha;
|
||||
return hex(rand(32), 8) // time_low
|
||||
+ "-"
|
||||
+ hex(rand(16), 4) // time_mid
|
||||
+ "-"
|
||||
+ hex(0x4000 | rand(12), 4) // time_hi_and_version
|
||||
+ "-"
|
||||
+ hex(0x8000 | rand(14), 4) // clock_seq_hi_and_reserved clock_seq_low
|
||||
+ "-"
|
||||
+ hex(rand(48), 12); // node
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an unsigned x-bit random integer.
|
||||
* @param {int} x A positive integer ranging from 0 to 53, inclusive.
|
||||
* @returns {int} An unsigned x-bit random integer (0 <= f(x) < 2^x).
|
||||
*/
|
||||
UUID._gri = function(x) { // _getRandomInt
|
||||
if (x < 0) return NaN;
|
||||
if (x <= 30) return (0 | Math.random() * (1 << x));
|
||||
if (x <= 53) return (0 | Math.random() * (1 << 30))
|
||||
+ (0 | Math.random() * (1 << x - 30)) * (1 << 30);
|
||||
return NaN;
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts an integer to a zero-filled hexadecimal string.
|
||||
* @param {int} num
|
||||
* @param {int} length
|
||||
* @returns {string}
|
||||
*/
|
||||
UUID._ha = function(num, length) { // _hexAligner
|
||||
var str = num.toString(16), i = length - str.length, z = "0";
|
||||
for (; i > 0; i >>>= 1, z += z) { if (i & 1) { str = z + str; } }
|
||||
return str;
|
||||
};
|
||||
|
Reference in New Issue
Block a user