webui-aria2/js/libs/dojox/uuid/Uuid.js.uncompressed.js
2012-05-01 19:52:07 +08:00

201 lines
7.8 KiB
JavaScript

//>>built
define("dojox/uuid/Uuid", ['dojo/_base/lang', './_base'], function(dojo, uuid){
dojox.uuid.Uuid = function(/*String?*/ input){
// summary:
// This is the constructor for the Uuid class. The Uuid class offers
// methods for inspecting existing UUIDs.
// input: A 36-character string that conforms to the UUID spec.
// examples:
// var uuid;
// uuid = new dojox.uuid.Uuid("3b12f1df-5232-4804-897e-917bf397618a");
// uuid = new dojox.uuid.Uuid(); // "00000000-0000-0000-0000-000000000000"
// uuid = new dojox.uuid.Uuid(dojox.uuid.generateRandomUuid());
// uuid = new dojox.uuid.Uuid(dojox.uuid.generateTimeBasedUuid());
// dojox.uuid.Uuid.setGenerator(dojox.uuid.generateRandomUuid);
// uuid = new dojox.uuid.Uuid();
// dojox.uuid.assert(!uuid.isEqual(dojox.uuid.NIL_UUID));
this._uuidString = dojox.uuid.NIL_UUID;
if(input){
dojox.uuid.assert(dojo.isString(input));
this._uuidString = input.toLowerCase();
dojox.uuid.assert(this.isValid());
}else{
var ourGenerator = dojox.uuid.Uuid.getGenerator();
if(ourGenerator){
this._uuidString = ourGenerator();
dojox.uuid.assert(this.isValid());
}
}
};
dojox.uuid.Uuid.compare = function(/*dojox.uuid.Uuid*/ uuidOne, /*dojox.uuid.Uuid*/ uuidTwo){
// summary:
// Given two UUIDs to compare, this method returns 0, 1, or -1.
// description:
// This method is designed to be used by sorting routines, like the
// JavaScript built-in Array sort() method. This implementation is
// intended to match the sample implementation in IETF RFC 4122:
// http://www.ietf.org/rfc/rfc4122.txt
// uuidOne: Any object that has toString() method that returns a 36-character string that conforms to the UUID spec.
// uuidTwo: Any object that has toString() method that returns a 36-character string that conforms to the UUID spec.
// examples:
// var uuid;
// var generator = dojox.uuid.TimeBasedGenerator;
// var a = new dojox.uuid.Uuid(generator);
// var b = new dojox.uuid.Uuid(generator);
// var c = new dojox.uuid.Uuid(generator);
// var array = new Array(a, b, c);
// array.sort(dojox.uuid.Uuid.compare);
var uuidStringOne = uuidOne.toString();
var uuidStringTwo = uuidTwo.toString();
if (uuidStringOne > uuidStringTwo) return 1; // integer
if (uuidStringOne < uuidStringTwo) return -1; // integer
return 0; // integer (either 0, 1, or -1)
};
dojox.uuid.Uuid.setGenerator = function(/*Function?*/ generator){
// summary:
// Sets the default generator, which will be used by the
// "new dojox.uuid.Uuid()" constructor if no parameters
// are passed in.
// generator: A UUID generator function, such as dojox.uuid.generateTimeBasedUuid.
dojox.uuid.assert(!generator || dojo.isFunction(generator));
dojox.uuid.Uuid._ourGenerator = generator;
};
dojox.uuid.Uuid.getGenerator = function(){
// summary:
// Returns the default generator. See setGenerator().
return dojox.uuid.Uuid._ourGenerator; // generator (A UUID generator, such as dojox.uuid.TimeBasedGenerator).
};
dojox.uuid.Uuid.prototype.toString = function(){
// summary:
// This method returns a standard 36-character string representing
// the UUID, such as "3b12f1df-5232-4804-897e-917bf397618a".
return this._uuidString; // string
};
dojox.uuid.Uuid.prototype.compare = function(/*dojox.uuid.Uuid*/ otherUuid){
// summary:
// Compares this UUID to another UUID, and returns 0, 1, or -1.
// description:
// This implementation is intended to match the sample implementation
// in IETF RFC 4122: http://www.ietf.org/rfc/rfc4122.txt
// otherUuid: Any object that has toString() method that returns a 36-character string that conforms to the UUID spec.
return dojox.uuid.Uuid.compare(this, otherUuid); // integer (either 0, 1, or -1)
};
dojox.uuid.Uuid.prototype.isEqual = function(/*dojox.uuid.Uuid*/ otherUuid){
// summary:
// Returns true if this UUID is equal to the otherUuid, or false otherwise.
// otherUuid: Any object that has toString() method that returns a 36-character string that conforms to the UUID spec.
return (this.compare(otherUuid) == 0); // boolean
};
dojox.uuid.Uuid.prototype.isValid = function(){
// summary:
// Returns true if the UUID was initialized with a valid value.
return dojox.uuid.isValid(this);
};
dojox.uuid.Uuid.prototype.getVariant = function(){
// summary:
// Returns a variant code that indicates what type of UUID this is.
// Returns one of the enumerated dojox.uuid.variant values.
// example:
// var uuid = new dojox.uuid.Uuid("3b12f1df-5232-4804-897e-917bf397618a");
// var variant = uuid.getVariant();
// dojox.uuid.assert(variant == dojox.uuid.variant.DCE);
// example:
// "3b12f1df-5232-4804-897e-917bf397618a"
// ^
// |
// (variant "10__" == DCE)
return dojox.uuid.getVariant(this);
};
dojox.uuid.Uuid.prototype.getVersion = function(){
// summary:
// Returns a version number that indicates what type of UUID this is.
// Returns one of the enumerated dojox.uuid.version values.
// example:
// var uuid = new dojox.uuid.Uuid("b4308fb0-86cd-11da-a72b-0800200c9a66");
// var version = uuid.getVersion();
// dojox.uuid.assert(version == dojox.uuid.version.TIME_BASED);
// exceptions:
// Throws an Error if this is not a DCE Variant UUID.
if(!this._versionNumber){
this._versionNumber = dojox.uuid.getVersion(this);
}
return this._versionNumber; // dojox.uuid.version
};
dojox.uuid.Uuid.prototype.getNode = function(){
// summary:
// If this is a version 1 UUID (a time-based UUID), getNode() returns a
// 12-character string with the "node" or "pseudonode" portion of the UUID,
// which is the rightmost 12 characters.
// exceptions:
// Throws an Error if this is not a version 1 UUID.
if (!this._nodeString) {
this._nodeString = dojox.uuid.getNode(this);
}
return this._nodeString; // String (a 12-character string, which will look something like "917bf397618a")
};
dojox.uuid.Uuid.prototype.getTimestamp = function(/*String?*/ returnType){
// summary:
// If this is a version 1 UUID (a time-based UUID), this method returns
// the timestamp value encoded in the UUID. The caller can ask for the
// timestamp to be returned either as a JavaScript Date object or as a
// 15-character string of hex digits.
// returnType: Any of these five values: "string", String, "hex", "date", Date
// returns:
// Returns the timestamp value as a JavaScript Date object or a 15-character string of hex digits.
// examples:
// var uuid = new dojox.uuid.Uuid("b4308fb0-86cd-11da-a72b-0800200c9a66");
// var date, string, hexString;
// date = uuid.getTimestamp(); // returns a JavaScript Date
// date = uuid.getTimestamp(Date); //
// string = uuid.getTimestamp(String); // "Mon, 16 Jan 2006 20:21:41 GMT"
// hexString = uuid.getTimestamp("hex"); // "1da86cdb4308fb0"
// exceptions:
// Throws an Error if this is not a version 1 UUID.
if(!returnType){returnType = null};
switch(returnType){
case "string":
case String:
return this.getTimestamp(Date).toUTCString(); // String (e.g. "Mon, 16 Jan 2006 20:21:41 GMT")
break;
case "hex":
// Return a 15-character string of hex digits containing the
// timestamp for this UUID, with the high-order bits first.
if (!this._timestampAsHexString) {
this._timestampAsHexString = dojox.uuid.getTimestamp(this, "hex");
}
return this._timestampAsHexString; // String (e.g. "1da86cdb4308fb0")
break;
case null: // no returnType was specified, so default to Date
case "date":
case Date:
// Return a JavaScript Date object.
if (!this._timestampAsDate) {
this._timestampAsDate = dojox.uuid.getTimestamp(this, Date);
}
return this._timestampAsDate; // Date
break;
default:
// we got passed something other than a valid returnType
dojox.uuid.assert(false, "The getTimestamp() method dojox.uuid.Uuid was passed a bogus returnType: " + returnType);
break;
}
};
return dojox.uuid.Uuid;
});