You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.2 KiB
56 lines
2.2 KiB
define(['./_base'], function(){ |
|
|
|
dojox.uuid.generateRandomUuid = function(){ |
|
// summary: |
|
// This function generates random UUIDs, meaning "version 4" UUIDs. |
|
// description: |
|
// A typical generated value would be something like this: |
|
// "3b12f1df-5232-4804-897e-917bf397618a" |
|
// |
|
// For more information about random UUIDs, see sections 4.4 and |
|
// 4.5 of RFC 4122: http://tools.ietf.org/html/rfc4122#section-4.4 |
|
// |
|
// This generator function is designed to be small and fast, |
|
// but not necessarily good. |
|
// |
|
// Small: This generator has a small footprint. Once comments are |
|
// stripped, it's only about 25 lines of code, and it doesn't |
|
// dojo.require() any other modules. |
|
// |
|
// Fast: This generator can generate lots of new UUIDs fairly quickly |
|
// (at least, more quickly than the other dojo UUID generators). |
|
// |
|
// Not necessarily good: We use Math.random() as our source |
|
// of randomness, which may or may not provide much randomness. |
|
// examples: |
|
// var string = dojox.uuid.generateRandomUuid(); |
|
var HEX_RADIX = 16; |
|
|
|
function _generateRandomEightCharacterHexString(){ |
|
// Make random32bitNumber be a randomly generated floating point number |
|
// between 0 and (4,294,967,296 - 1), inclusive. |
|
var random32bitNumber = Math.floor( (Math.random() % 1) * Math.pow(2, 32) ); |
|
var eightCharacterHexString = random32bitNumber.toString(HEX_RADIX); |
|
while(eightCharacterHexString.length < 8){ |
|
eightCharacterHexString = "0" + eightCharacterHexString; |
|
} |
|
return eightCharacterHexString; // for example: "3B12F1DF" |
|
} |
|
|
|
var hyphen = "-"; |
|
var versionCodeForRandomlyGeneratedUuids = "4"; // 8 == binary2hex("0100") |
|
var variantCodeForDCEUuids = "8"; // 8 == binary2hex("1000") |
|
var a = _generateRandomEightCharacterHexString(); |
|
var b = _generateRandomEightCharacterHexString(); |
|
b = b.substring(0, 4) + hyphen + versionCodeForRandomlyGeneratedUuids + b.substring(5, 8); |
|
var c = _generateRandomEightCharacterHexString(); |
|
c = variantCodeForDCEUuids + c.substring(1, 4) + hyphen + c.substring(4, 8); |
|
var d = _generateRandomEightCharacterHexString(); |
|
var returnValue = a + hyphen + b + hyphen + c + d; |
|
returnValue = returnValue.toLowerCase(); |
|
return returnValue; // String |
|
}; |
|
|
|
return dojox.uuid.generateRandomUuid; |
|
|
|
});
|
|
|