123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.uuid.generateRandomUuid"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.uuid.generateRandomUuid"] = true;
- dojo.provide("dojox.uuid.generateRandomUuid");
- 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
- };
- }
|