Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1318 alexandre_ 1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
10
 
1422 alexandre_ 11
 
12
 
1318 alexandre_ 13
dojo.provide("dojo.lang.type");
14
dojo.require("dojo.lang.common");
15
dojo.lang.whatAmI = function (value) {
16
	dojo.deprecated("dojo.lang.whatAmI", "use dojo.lang.getType instead", "0.5");
17
	return dojo.lang.getType(value);
18
};
19
dojo.lang.whatAmI.custom = {};
20
dojo.lang.getType = function (value) {
21
	try {
22
		if (dojo.lang.isArray(value)) {
23
			return "array";
24
		}
25
		if (dojo.lang.isFunction(value)) {
26
			return "function";
27
		}
28
		if (dojo.lang.isString(value)) {
29
			return "string";
30
		}
31
		if (dojo.lang.isNumber(value)) {
32
			return "number";
33
		}
34
		if (dojo.lang.isBoolean(value)) {
35
			return "boolean";
36
		}
37
		if (dojo.lang.isAlien(value)) {
38
			return "alien";
39
		}
40
		if (dojo.lang.isUndefined(value)) {
41
			return "undefined";
42
		}
43
		for (var name in dojo.lang.whatAmI.custom) {
44
			if (dojo.lang.whatAmI.custom[name](value)) {
45
				return name;
46
			}
47
		}
48
		if (dojo.lang.isObject(value)) {
49
			return "object";
50
		}
51
	}
52
	catch (e) {
53
	}
54
	return "unknown";
55
};
56
dojo.lang.isNumeric = function (value) {
57
	return (!isNaN(value) && isFinite(value) && (value != null) && !dojo.lang.isBoolean(value) && !dojo.lang.isArray(value) && !/^\s*$/.test(value));
58
};
59
dojo.lang.isBuiltIn = function (value) {
60
	return (dojo.lang.isArray(value) || dojo.lang.isFunction(value) || dojo.lang.isString(value) || dojo.lang.isNumber(value) || dojo.lang.isBoolean(value) || (value == null) || (value instanceof Error) || (typeof value == "error"));
61
};
62
dojo.lang.isPureObject = function (value) {
63
	return ((value != null) && dojo.lang.isObject(value) && value.constructor == Object);
64
};
65
dojo.lang.isOfType = function (value, type, keywordParameters) {
66
	var optional = false;
67
	if (keywordParameters) {
68
		optional = keywordParameters["optional"];
69
	}
70
	if (optional && ((value === null) || dojo.lang.isUndefined(value))) {
71
		return true;
72
	}
73
	if (dojo.lang.isArray(type)) {
74
		var arrayOfTypes = type;
75
		for (var i in arrayOfTypes) {
76
			var aType = arrayOfTypes[i];
77
			if (dojo.lang.isOfType(value, aType)) {
78
				return true;
79
			}
80
		}
81
		return false;
82
	} else {
83
		if (dojo.lang.isString(type)) {
84
			type = type.toLowerCase();
85
		}
86
		switch (type) {
87
		  case Array:
88
		  case "array":
89
			return dojo.lang.isArray(value);
90
		  case Function:
91
		  case "function":
92
			return dojo.lang.isFunction(value);
93
		  case String:
94
		  case "string":
95
			return dojo.lang.isString(value);
96
		  case Number:
97
		  case "number":
98
			return dojo.lang.isNumber(value);
99
		  case "numeric":
100
			return dojo.lang.isNumeric(value);
101
		  case Boolean:
102
		  case "boolean":
103
			return dojo.lang.isBoolean(value);
104
		  case Object:
105
		  case "object":
106
			return dojo.lang.isObject(value);
107
		  case "pureobject":
108
			return dojo.lang.isPureObject(value);
109
		  case "builtin":
110
			return dojo.lang.isBuiltIn(value);
111
		  case "alien":
112
			return dojo.lang.isAlien(value);
113
		  case "undefined":
114
			return dojo.lang.isUndefined(value);
115
		  case null:
116
		  case "null":
117
			return (value === null);
118
		  case "optional":
119
			dojo.deprecated("dojo.lang.isOfType(value, [type, \"optional\"])", "use dojo.lang.isOfType(value, type, {optional: true} ) instead", "0.5");
120
			return ((value === null) || dojo.lang.isUndefined(value));
121
		  default:
122
			if (dojo.lang.isFunction(type)) {
123
				return (value instanceof type);
124
			} else {
125
				dojo.raise("dojo.lang.isOfType() was passed an invalid type");
126
			}
127
		}
128
	}
129
	dojo.raise("If we get here, it means a bug was introduced above.");
130
};
131
dojo.lang.getObject = function (str) {
132
	var parts = str.split("."), i = 0, obj = dj_global;
133
	do {
134
		obj = obj[parts[i++]];
135
	} while (i < parts.length && obj);
136
	return (obj != dj_global) ? obj : null;
137
};
138
dojo.lang.doesObjectExist = function (str) {
139
	var parts = str.split("."), i = 0, obj = dj_global;
140
	do {
141
		obj = obj[parts[i++]];
142
	} while (i < parts.length && obj);
143
	return (obj && obj != dj_global);
144
};
145